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.
¿Has probado el ejemplo de Fatjar en el libro de cocina Gradle ?
Lo que estás buscando es el plugin shadow para gradle