I’ve been playing around with the latest release candidate of Gradle, and have had trouble with a few things:
- integrating native code outputs (or stages) with the Java lifecycle. I’d like to be able to combine the native code and Java world for JNI and Avian (https://github.com/ReadyTalk/avian) purposes. I had trouble wiring up the native code related tasks to the Java lifecycle (it seems like you’re keeping two lifecycles alive - one very native code focused, and one very Java (JVM language) focused). Will that improve with later releases? How would I be able to depend on a native code task from a Java task (or vice versa)? - understanding the paradigm of the approach you’r taking with the native code approach vs. the approach you took with the JVM languages. I see the native code approach being almost fully output artifact driven (define the final artifact that you want, and then configure, if necessary, the intermediate steps to get to that point) vs. Java’s full convention based approach + artifact publishing tacked on if you want it (apply another plugin + do some additional configuration). Could you describe how you’re going to merge these two concepts? I see some of the native code changes going pretty deep into Gradle core, so I assume you’ve talked about it… - native code DSL improvements. The documentation is pretty good for being an incubaing feature (http://www.gradle.org/docs/release-candidate/userguide/nativeBinaries.html), but I quickly had to dive into Java/Groovydoc and source to understand how you were connecting the “libraries”, “executables”, “binaries”, “toolchains”, and “sources” together. I’m starting to get it, but there are a lot of new DSL elements that have been added, and it seems like you can’t easily access the tasks that are created from those DSL elements all that easily… I sorta miss being able to configure the tasks directly.
All that said - I’m stoked that you guys are making good headway in the native code domain. I have much faith that you’re going to revolutionize the native code build domain like you have with the JVM build domain.