tutorial the primeros pasos mundo hola generar español ejemplo con jar gradle uberjar

the - gradle: ¿cómo construyo un jar con un libdb con otros jarrones?



gradle where is the jar (8)

Debajo del código podría intentarse. Depende de la tarea jar y es de Type Jar

task createJobJar(dependsOn:jar,type:Jar) { manifest { attributes( "Implementation-Title": ''Job '' ,"Implementation-Version": version ) } classifier ''job'' destinationDir new File("$buildDir") into(''libs''){ from configurations.compile } into(''classes''){ from "$buildDir/classes" } into(''resources''){ from "$projectDir/src/main/resources" } into(''scripts''){ from "$projectDir/src/main/scripts" } }

El código anterior incluiría diferentes contenidos dentro de diferentes directorios. Probado en gradle 2.2

En gradle: ¿cómo puedo incrustar frascos dentro de mi jar de salida de compilación en el directorio lib (específicamente lib / enttoolkit.jar y lib / mail.jar)?


En mi caso, necesitaba incluir un contenido del proyecto raíz Jar en el subproyecto Jar. Entonces, para hacerlo funcionar, uno puede usar esta plantilla:

jar{ manifest{ attributes ''Main-Class'':''<main class>'' } def conf= configurations.find {it.name.equals(''compile'') } File jar= conf.files.find {it.name.contains(''<name or part of the name of produced Jar>'')} FileTree fileTree=zipTree(jar) from fileTree }

Mi ejemplo:

jar{ manifest{ attributes ''Main-Class'':''alexiy.jace.Jace'' } description=''Make a runnable API Jar'' def conf= configurations.find {it.name.equals(''compile'') } File tools= conf.files.find {it.name.contains(''Tools'')} FileTree fileTree=zipTree(tools) from fileTree }


Levantado textualmente de: http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-Creatingafatjar

Gradle 0.9:

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

Gradle 0.8:

jar.doFirst { for(file in configurations.compile) { jar.merge(file) } }

Los fragmentos anteriores solo incluirán las dependencias de compilación para ese proyecto, no cualquier dependencia de tiempo de ejecución transitiva. Si también desea fusionarlos, reemplace configurations.compile con configurations.runtime.

EDITAR : solo elige los frascos que necesitas

Realice una nueva configuración, libere los tarros tal vez

configurations { releaseJars }

Agregue los jarrones que desea a esa configuración

dependencies { releaseJars group: ''javax.mail'', name: ''mail'', version: ''1.4'' //etc }

luego use esa configuración en la tarea jar que se describe arriba.


Necesitaba lo mismo que me pediste y usé este método. es posible que no necesite una declaración de configuración personalizada, pero necesitaba separar los archivos jar usados ​​localmente de los declarados en un archivo de superconstrucción.

configurations{ //declare custom config if necessary, otherwise just use compile myLibs } dependencies { //add lib/*.jar files to myLibs myLibs fileTree(dir: ''lib'', include: ''*.jar'') compile { //set compile configuration to extend from myLibs extendsFrom myLibs } } // task to copy libs to output/lib dir task copyToLib(type: Copy) { into "$buildDir/output/lib" from configurations.myLibs } jar { //include contents of output dir from "$buildDir/output" manifest { //... } } //set build task to depend on copyToLib build.dependsOn(copyToLib)


Si tiene todos los archivos jar dentro de un directorio (vamos a llamarlo libs ) en su proyecto, solo necesita esto:

jar { into(''lib'') { from ''libs'' } }

Supongo que es más probable que estos frascos sean dependencias de algún tipo. Entonces podrías hacerlo así:

configurations { // configuration that holds jars to copy into lib extraLibs } dependencies { extraLibs ''org.something:something-dep1:version'' extraLibs ''org.something:something-dep2:version'' } jar { into(''lib'') { from configurations.extraLibs } }


También tuve que hacer algo similar y no pude obtener lo que Guus y Stigkj sugirieron que funcionara, pero me acerqué lo suficiente con su ayuda para que esto funcionara (el ejemplo de Guus explotó en las dependencies { compile { extendsFrom myLibs }} cerrar para mi.

apply plugin: ''groovy'' repositories { mavenCentral() } configurations { // custom config of files we want to include in our fat jar that we send to hadoop includeInJar } dependencies { includeInJar ''org.codehaus.groovy:groovy:1.8.6'' configurations.compile.extendsFrom(configurations.includeInJar) } jar { into(''lib'') { println "includeInJar: " + configurations.includeInJar.collect { File file -> file } from configurations.includeInJar } }

Luego, al ejecutar el gradle jar y al examinar el jar creado, obtengo esta salida, lo que demuestra que el archivo jar tiene groovy y todos los frascos de los que depende el "frasco de grasa":

% gradle jar includeInJar: [/Users/tnaleid/.gradle/caches/artifacts-8/filestore/org.codehaus.groovy/groovy/1.8.6/jar/553ca93e0407c94c89b058c482a404427ac7fc72/groovy-1.8.6.jar, /Users/tnaleid/.gradle/caches/artifacts-8/filestore/antlr/antlr/2.7.7/jar/83cd2cd674a217ade95a4bb83a8a14f351f48bd0/antlr-2.7.7.jar, /Users/tnaleid/.gradle/caches/artifacts-8/filestore/asm/asm/3.2/jar/9bc1511dec6adf302991ced13303e4140fdf9ab7/asm-3.2.jar, /Users/tnaleid/.gradle/caches/artifacts-8/filestore/asm/asm-tree/3.2/jar/cd792e29c79d170c5d0bdd05adf5807cf6875c90/asm-tree-3.2.jar, /Users/tnaleid/.gradle/caches/artifacts-8/filestore/asm/asm-commons/3.2/jar/e7a19b8c60589499e35f5d2068d09013030b8891/asm-commons-3.2.jar, /Users/tnaleid/.gradle/caches/artifacts-8/filestore/asm/asm-util/3.2/jar/37ebfdad34d5f1f45109981465f311bbfbe82dcf/asm-util-3.2.jar, /Users/tnaleid/.gradle/caches/artifacts-8/filestore/asm/asm-analysis/3.2/jar/c624956db93975b7197699dcd7de6145ca7cf2c8/asm-analysis-3.2.jar] :compileJava UP-TO-DATE :compileGroovy UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :jar BUILD SUCCESSFUL Total time: 3.387 secs % jar tvf build/libs/gradletest.jar 0 Mon Mar 12 11:40:00 CDT 2012 META-INF/ 25 Mon Mar 12 11:40:00 CDT 2012 META-INF/MANIFEST.MF 0 Mon Mar 12 11:40:00 CDT 2012 lib/ 5546084 Mon Mar 05 13:13:32 CST 2012 lib/groovy-1.8.6.jar 445288 Mon Mar 05 13:13:38 CST 2012 lib/antlr-2.7.7.jar 43398 Mon Mar 05 13:13:40 CST 2012 lib/asm-3.2.jar 21878 Mon Mar 05 13:13:40 CST 2012 lib/asm-tree-3.2.jar 33094 Mon Mar 05 13:13:40 CST 2012 lib/asm-commons-3.2.jar 36551 Mon Mar 05 13:13:40 CST 2012 lib/asm-util-3.2.jar 17985 Mon Mar 05 13:13:40 CST 2012 lib/asm-analysis-3.2.jar


sencillo:

task copyToLib( type: Copy ) { into "$buildDir/libs/lib" from configurations.runtime } jar { dependsOn copyToLib }

ejecutarlo:

$ gradle jar ... $ tree build/libs build/libs ├── your-project-0.0.1.BUILD-SNAPSHOT.jar └── lib ├── akka-actor-2.0.jar ├── akka-camel-2.0.jar ├── ... ... ... ├── spring-expression-3.1.0.RELEASE.jar └── zmq-2.1.9.jar 1 directory, 46 files


task <taskname>(type: Jar) { archiveName ''nameofjar.jar'' doFirst { manifest { attributes ''Class-Path'': configurations.compile.files.collect{ project.uri(it) }.join('' '') } } }