Create a Fat JAR with Gradle: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 14: Line 14:


<syntaxhighlight lang='java'>
<syntaxhighlight lang='java'>
dependencies {
    ...
    compile 'com.amazonaws:aws-lambda-java-core:1.2.0'
    compile 'com.googlecode.json-simple:json-simple:1.1.1'
    ...
}
jar {
jar {


Line 27: Line 36:
}
}
</syntaxhighlight>
</syntaxhighlight>
Note that the Jar task configuration uses the "compile" configuration to decide what dependencies to include in the JAR. <font color=darkgray>Come up with an equivalent setup for the 'implementation' configuration.</font>


=Creating a Fat JAR with the Shadow Plugin=
=Creating a Fat JAR with the Shadow Plugin=


<font color=darkgray>Not tested.</font>
<font color=darkgray>Not tested.</font>

Revision as of 00:13, 8 March 2019

External

Internal

Overview

A "fat" JAR, or an uber-JAR, is a self-sufficient archive which contains both classes and dependencies needed to run an application. It is also configured with a Main-Class attribute. The Gradle Java plugin creates "thin" JARs. However, it can be configured to create a "fat" JAR. Specialized plugins are also available.

Creating a Fat JAR with the Jar Task from the Java Plugin

dependencies {

    ...
    compile 'com.amazonaws:aws-lambda-java-core:1.2.0'
    compile 'com.googlecode.json-simple:json-simple:1.1.1'
    ...
}


jar {

    manifest {

        attributes "Main-Class": "com.example.Application"
    }
 
    from {

        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

Note that the Jar task configuration uses the "compile" configuration to decide what dependencies to include in the JAR. Come up with an equivalent setup for the 'implementation' configuration.

Creating a Fat JAR with the Shadow Plugin

Not tested.