plugin java groovy gradle uberjar

plugin - gradle java jar



Construyendo un uberjar con Gradle (4)

Encontré este project muy útil. Utilicándolo como referencia, mi tarea de Gradle uberjar sería

task uberjar(type: Jar, dependsOn: ['':compileJava'', '':processResources'']) { from files(sourceSets.main.output.classesDir) from configurations.runtime.asFileTree.files.collect { zipTree(it) } manifest { attributes ''Main-Class'': ''SomeClass'' } }

Soy un novato de Gradle. Quiero construir un uberjar (también conocido como fatjar) que incluya todas las dependencias transitivas del proyecto. ¿Qué líneas debo agregar a mi "build.gradle"?

Esto es lo que tengo actualmente: (Lo copié de algún lugar hace unos días, pero no recuerdo de dónde).

task uberjar(type: Jar) { from files(sourceSets.main.output.classesDir) manifest { attributes ''Implementation-Title'': ''Foobar'', ''Implementation-Version'': version, ''Built-By'': System.getProperty(''user.name''), ''Built-Date'': new Date(), ''Built-JDK'': System.getProperty(''java.version''), ''Main-Class'': mainClassName } }


Simplemente agregue esto a build.gradle de su módulo java.

mainClassName = "my.main.Class"

jar { manifest { attributes "Main-Class": "$mainClassName" } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }

Esto dará como resultado el archivo [nombre_módulo] / build / libs / [nombre_módulo] .jar.


task uberjar(.. la task uberjar(.. con lo siguiente:

jar { from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) { exclude "META-INF/*.SF" exclude "META-INF/*.DSA" exclude "META-INF/*.RSA" } manifest { attributes ''Implementation-Title'': ''Foobar'', ''Implementation-Version'': version, ''Built-By'': System.getProperty(''user.name''), ''Built-Date'': new Date(), ''Built-JDK'': System.getProperty(''java.version''), ''Main-Class'': mainClassName } }

Las exclusiones son necesarias porque en su ausencia usted llegará a this problema.