It's a multi-project build.  My "fat" jar contains all runtime dependencies, 
including jars of 3 other projects.  So assuming you have project dependencies 
defined (i.e. compile project(":subproject")) that end up in the runtime 
configuration (i.e. configurations.runtime), your subprojects will be included 
in your "fat" jar using my previous example.  This is one of the great things 
about Gradle - makes it very easy to do this kind of thing.

-Andrew

-----Original Message-----
From: Roger Studner [mailto:[email protected]] 
Sent: Friday, January 20, 2012 11:35 AM
To: [email protected]
Subject: Re: [gradle-user] combo of things i'm trying to accomplish

Cool, thanks for the info!

Have you tried this on multi-project builds?  or is this for single-projects 
only

(not a deal breaker, just curious!)

Roger

On Jan 20, 2012, at 11:31 AM, Andrew Goode wrote:

> Are you talking about using Simon Tuffs' One-JAR 
> (http://one-jar.sourceforge.net/)?  I use this to package a "fat" executable 
> jar in a Gradle script for one of my projects.
> 
> I think you have 2 options for using One-JAR within Gradle:
> 
> 1.  Try out one of the few Gradle plugins that some smart people have 
> written e.g. Robert Fischer's OneJar plugin 
> http://wiki.gradle.org/display/GRADLE/Plugins#Plugins-OneJarplugin
> 
> 2.  Use One-JAR's Ant task within your Gradle script.
> 
> I currently use #2 b/c it was really easy and allowed me to customize my 
> build the way I wanted.  I use something like this:
> 
> apply plugin: "java"
> 
> jar {
>        manifest {
>                attributes 'Main-Class': 'your.executable.MainClass'
>        }
> }
> 
> task oneJar {
>        dependsOn jar
>        doFirst {
>                ant.taskdef(name: "onejar", classname: 
> "com.simontuffs.onejar.ant.OneJarTask", classpath: 
> file("one-jar-ant-task-0.96.jar"), onerror: "report")
>                ant.onejar(destfile: 
> jar.destinationDir.path+"/"+project.archivesBaseName+"-cli-"+version+".jar") {
>                        ant.main(jar: project.tasks.jar.archivePath)
>                        ant.lib() {
>                                configurations.runtime.findAll { 
> !configurations.provided.contains(it) }.each { f ->
>                                        ant.fileset(file: f.path)
>                                }
>                        }
>                }
>        }
> }
> 
> Where "provided" is a custom configuration used simply to make sure certain 
> things are excluded from the "fat" jar.
> 
> Good luck!
> 
> 
> 
> Andrew Goode | Technical Architect/Team Lead
> tel: 678-762-6861
> [email protected]
> 1200 Lake Hearn Drive, Suite 500, Atlanta, GA, 30319 
> http://www.nextraq.com
> 
> This communication, along with any attachment(s), is intended only for the 
> use of the addressee(s) and may contain proprietary, confidential or 
> privileged information. If you are not the intended recipient, you are hereby 
> notified that any dissemination, distribution or copying of any information 
> contained in or attached to this communication is strictly prohibited. If you 
> have received this message in error, please notify the sender immediately and 
> destroy the original communication and its attachments without reading, 
> printing or saving in any manner. Thank you.
> 
> -----Original Message-----
> From: Roger Studner [mailto:[email protected]]
> Sent: Friday, January 20, 2012 10:26 AM
> To: [email protected]
> Subject: [gradle-user] combo of things i'm trying to accomplish
> 
> I'm trying to wean someone off maven (yay!).. but they have one plugin 
> I can't seem to beat :)
> 
> I want to be able to make, essentially, a "fat jar" that also has a 
> MANIFEST.MF that is executable.
> 
> so fat jar problem (get all the classes etc etc into 1 jar).. combined with 
> executable jar.
> 
> Thoughts?
> 
> Thanks!
> 
> Roger
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>    http://xircles.codehaus.org/manage_email
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>    http://xircles.codehaus.org/manage_email
> 
> 


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to