The official Gradle company blog, covering build tool releases, Kotlin DSL, declarative builds, Java support and comparisons with Bazel.
HN commenters link it for jcenter shutdown details, Java toolchains and the Bazel comparison, while others complain about Gradle's complexity and breaking changes.
I am sympathetic. Declarative programming is _conceptually_ pure. I find in practice, it always makes the core hard things it intends easy and all other trivial matters a torture exercise (see XSLT.) So I can see why you'd reject a goofball imperative programming language like Ant made from XML. I also have had 'sharp edges' experiences with the Gradle Daemon, which struggled to deliver on the build acceleration promises in any case, so I share your frustration there as well.
Gradle and Maven have one rare superpower, maybe you could lump Ivy in there, which is to navigate and cache maven repos to build dynamic classpaths. Java is like a 10-ton elephant hurtling downhill on one foot on a squeaky old rollerskate. Somehow it manages to stays up, but it's always a near run thing whether it crashes. I appreciate that Gradle continues to make incremental advances that keep the elephant up. You complain that Gradle keeps breaking the DSL, but they have to navigate new Java, Groovy, and Maven releases that have relevant feature developments. It's a 16 year old program, it's going to either change or die. I look at JavaExec and consider the power of all it does expressed in such a simple way. Just that one feature makes Gradle tough to beat and worthwhile: https://docs.gradle.org/current/dsl/org.gradle.api.tasks.JavaExec.html
Here are the recent-ish feature adds that I found super impactful and that improved the way I worked with Gradle and the overall quality of my…
Gradle files are less verbose than the equivalent Maven pom.xml but Gradle tends to have other issues like: complex builds that are hard to maintain, not running on the latest JVM version without some wait time, and constantly breaking because Gradle makes breaking changes every release. I'm hoping the declarative Gradle experiment [0] helps with this.
Additionally if XML isn't your thing Maven is making a push for other formats in Maven 4 like HOCON [1].
[0] https://blog.gradle.org/declarative-gradle-first-eap [1] https://github.com/apache/maven-hocon-extension
Since Java interop was a #1 priority w/ Kotlin, it has the same library support that Java does. Almost all of the major libraries just work.
Lately bigger players have started to take notice:
https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0
https://blog.gradle.org/kotlin-meets-gradle
I'm still not sure where it will end up, but things look pretty good right now.
But wrt Type Erasure, Kotlin doesn't completely get rid of it; but it does offer some ability to retain Types in some generic situations.
If you're using Gradle + jcenter repository, it will fail.
I ran into this when building a Flutter mobile app, relying on Gradle to fetch dependencies.
There is more information here: https://blog.gradle.org/jcenter-shutdown
I was able to find all the dependencies I needed on the Maven Central repository, so it was a quick fix in my case.
> Gradle requires me to use a totally different programming language just to write configuration
There's an alternative to using Apache Groovy for writing Gradle config scripts: https://blog.gradle.org/kotlin-meets-gradle . If you also use Kotlin instead of Java for your software on the JVM then you can stick to one language for everything.
> How about java projects? How can I add a dependency to a project I’m building without it being published to a maven repo, for instance?
You can use Gradle, which supports source repositories, instead of Maven:
https://blog.gradle.org/introducing-source-dependencies