Is Gradle suitable for

Just after some direction before I attempt to dive into Gradle properly. I’ve just watched Hans Dockter’s Rock the Gradle tube so I’ve got a rough feel that Gradle may be able help out during the build process although my concern is that my requirements are either such a small subset of Gradle’s capability or so way off it’s main focus that it may not be the right path to follow.

Enough waffle…my build requirements; - The overall project is a set of smaller projects, each of which follow a similar pattern (below); — LDAP schema changes

— Database schema changes, plus some meta data updates to tables — Application updates; the ‘apps’ are essentially java, but are created as xml files that are deployed to a bunch of JVM’s — Properties files that are environment specific (credentials, hostnames etc) - needs value injection at deployment time — External jars, .jsp’s, css’s etc - these can’t be wrapped into a war - they have to be deployed as static files - that’s just the way these extensions work in our app. — For each release I will need to produce one set of LDAP changes, one set of DB changes, one set of application updates - each deploys onto a different set of servers. During deployment the various components will need to be restarted - it would be ‘nice’ to include this in a script, but not essential. — For security reasons we can’t fully automate deployment so the ‘best’ automation possible is to build environment specific tar’s (or similar) that we can drop onto the target and deploy manually - ugly, but that’s the security trade-off for me & fair enough. This means things like Chef can’t help me with deployment so my focus is to attempt to automate the build of the package as that’s all I can affect. — We don’t need unit tests during the build process - we couldn’t unit test most of our java code anyway without the full infrastructure which can’t be contacted from the build side of the network. — Most projects don’t depend on each other, although we do have a handful of components that are in Netbeans and have dependencies on each other. — We use SVN as a repository so what I’d ‘like’ is to be able to run a build that pulls all the latest code from SVN to form the give release package - for organisational reasons we can’t continuous release so it’s discrete qtrly for us.

So, question is for those experienced with Gradle - are my requirements too deployment focussed and I should be barking up another tree or does anyone think Gradle is the right sort tool for this kind of environment??

After typing it feels that my focus is on building a good package that I can use for manual deployment from a scattered set of resources and no/minimal java code to compile and unit test where everything is stored in SVN (perhaps that’s all I needed to say…doh)

Many thanks if you got this far!!

HI Karl,

The devil is always in the detail, but Gradle certainly can help with what you’ve described. Such a custom domain always has its challenges, but Gradle excels at dealing with custom domains.

Separate to the Gradle project, is the Gradleware company that offers assistance with Gradle related projects. it might be worth your time to make contact via http://www.gradleware.com to assess options there.

Karl, I think you definitely want to look into Gradle for the assembly side. It has a very well defined, concise and flexible interface for creating archives allowing you to re-map directories, transform and rename files. It probably would not be very hard to roll your own framework with just this, but this is only a fraction of the features in Gradle.

The other side of your question is developing a set of tools to support deploying your packages to each area of your environment. I think this is really where you get into the details. The choices you need to make would be more dependent on what the target environment looks like. You might be better off looking at tools designed directly for the target OS or software application(s) in question.