On 12/04/2011, at 11:33 AM, Eric Berry wrote:

> Hello,
>     I'm about 2 minutes away from giving up on using Gradle for my java 
> application.
> 
> I have a multi-module Java project that looks like:
> MyProject/
>     app/
>     common/
> 
> The App project depends on the common project for compile and for runtime. 
> The Common project requires commons-lang.
> 
> Using commons lang classes in my App project is fine during compilation time, 
> and all my unit tests pass. However I cannot for the life of me get the 
> dependencies of the common project into the app project for deployment.
> 
> I cannot see any easy way to collect all the dependencies of App into a 
> single jar file to ship.
> I was pointed to this in the IRC chat room: 
> http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-Creatingafatjar
> 
> But even changing it to configurations.runtime does absolutely nothing.

Assuming that your app project is using the java plugin, you can do something 
like this:

jar {
    dependOn configurations.runtime
    from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) 
} }
}

At some point, we will add a nicer way of merging stuff into the jar. And 
perhaps we will add a variation of the application plugin which takes care of 
configuring things to create an executable self-contained jar.


> 
> The best that I can come up with is something like:
> [code]
> assemble << {
>     copy {
>         into "${buildDir}/classes/main"
>         from configurations.compile.allDependencies.collect { dep ->
>             dep.dependencyProject.configurations.compile.collect {
>                 it.isDirectory() ? it : zipTree(it)
>             }
>         }
>     }
> }
> [/code]
> 
> But this seems horrible to me.
> 
> Please tell me that there is an easy way to do this. Any help here would be 
> greatly appreciated.
> 
> Thanks.
> Eric
> 
> -- 
> Learn from the past. Live in the present. Plan for the future.
> Blog: http://eric-berry.blogspot.com
> jEdit <http://www.jedit.org> - Programmer's Text Editor
> Bazaar <http://bazaar.canonical.com> - Version Control for Humans


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com

Reply via email to