Hi John, thanks for the offer.
We actually support Maven as well as the gradle-based system. We use gradle to generate the maven poms for those subprojects, in order to keep dependencies and version numbers in synch (caveat: rundeckapp has a mostly hand-hewn pom).
We do want to maintain maven compatible builds, as some people haven't made the leap to gradle and need to build rundeck themselves.
When not built with maven, Gradle is used for the java components, but Grails is used directly for the 'rundeckapp'. Also, the documentation is built with a groovy script + Pandoc, and a few more recursive Makefiles. Rpm/deb packaging uses Makefiles. This is tied together in the top Makefile. Some of this unfortunately has evolved slower than other bits.
Ideally we would have just direct gradle and maven builds.
There are a few steps that might be tricky to convert:
* the main Grails build of rundeckapp: If we can build grails 1.3.7 easily with gradle, that's great. I think grails 2.+ might have gradle support, but I haven't had a chance to investigate. (Grails 2+ upgrade is on the roadmap, but not in the near future)
* documentation build could probably be replaced with gradle directly to call the groovy wrapper over Pandoc (Note: the maven build *doesn't* currently support building the documentation)
* rpm/deb packaging: might be more natural to leave to use make? it also currently depends on the documentation build.
So, it's a bit of a tangle, if you'd like to help clear out the old-growth forest and plant the new trees that'd be great!
We should also consider whether maintaining documentation and packaging build in the same repo makes sense. Maybe it makes more sense to migrate those parts to separate repos/builds, and use several Jenkins jobs to do the builds. People only interested in the war/java components wouldn't have to care about the rest.
And, since we're talking about builds, here are some other improvements that I'd like to make eventually as well:
* build a rundeck-plugin-api jar in addition to rundeck-core, and publish all the artifacts to maven central
* change the launcher-jar build to actually just be an executable form of the war
* if possible, find (or build) a java/groovy-based replacement for pandoc
cheers,
Greg
On Wed, Sep 12, 2012 at 11:58 AM, John Burbridge
<johnbu...@gmail.com> wrote:
Hello folks,
I'm working on setting up my dev environment to start making contributions to the Rundeck project and I noticed that Make is doing a lot of calls to Gradle which is currently used to build artifacts for each individual subproject. These subprojects in turn generate pom files that are wired up together in a Maven multi-module setup via a parent pom. Does that sound about right?
Unless I'm missing something, I believe the build could be simplified (and sped) up by leveraging Gradle across the board. The idea being that it could be setup as a multi-project build replacing Make, as well as managing dependencies, generating snapshots, packaging, downloading and installing components like Grails, etc. Maven poms could still be generated to tie everything together in a multi-module setup, but given that STS has pretty good Gradle tooling, I see little benefit in supporting Maven.
I'd be glad to take a stab at implementing a pure Gradle build if others think this would be a good idea.
Thoughts?
JB