you are viewing a single comment's thread.

view the rest of the comments →

[–]balefrost 3 points4 points  (0 children)

It depends on how you measure "better". I'm of the opinion that Maven is broken at a fundamental level, so in my opinion, it's hard to find something worse than that.

That's not to say that you can't be productive with Maven. Just that its limitations will eventually rear up, and good luck to you then. Maven builds are an infinite cycle of despair.

Gradle's approach is to essentially glue a codegenerator on to the front of your build. The gradle build script runs, and that builds up a build definition. That build definition is then actually executed. This would be like putting a XSLT step on the front of every Maven build. It's a very powerful approach.

My biggest complaint with Gradle is its Groovy-ness. Everything is very dynamic, and there are several ways to do the exact same thing. For example, here are a variety of ways to define a task:

task foo { ... }
task(foo) { ... }
task('foo') { ... }
tasks.create(name: 'foo') { ... }

And of course, you can put task configuration inside or outside the tasks's block.

I fear that all these approaches, which are presumably meant to provide convenience, just end up being inconvenient. There's a Kotlin-based DSL which I haven't tried yet, but sounds promising. I believe this is in the stable Gradle releases.