tutorial run generate example java jar gradle

java - run - Cómo compilar fuentes jar con gradle



gradle tutorial (5)

El equivalente DSL de Kotlin sería:

tasks { val sourcesJar by creating(Jar::class) { dependsOn(JavaPlugin.CLASSES_TASK_NAME) classifier = "sources" from(java.sourceSets["main"].allSource) } val javadocJar by creating(Jar::class) { dependsOn(JavaPlugin.JAVADOC_TASK_NAME) classifier = "javadoc" from(java.docsDir) } artifacts { add("archives", sourcesJar) add("archives", javadocJar) } }

Estoy trabajando con un proyecto de código abierto que está construido con gradle. Me gustaría generar un archivo (project) -sources.jar que pueda cargar en mi IDE (IntelliJ IDEA) y depurar a través del proyecto. Sé cómo cargar el archivo si puedo generarlo.

Revisé las tareas de gradle disponibles para el proyecto y no hay ninguna que genere un archivo jar de orígenes.

¿Cuál es la forma más fácil de generar un archivo jar de orígenes para este proyecto?

También estaría bien agregar la fuente en el archivo jar que contiene los archivos de clase compilados.


Esto debería funcionar

assemble.dependsOn ''propertyJar'' task propertyJar(type: Jar) { archiveName = "myJarName.jar" from(''src/main/resources'') { include ''**'' }}


Si desea agregar las fuentes al archivo JAR de las clases compiladas , que también dijo que serían aceptables, puede hacerlo con la suficiente facilidad. Simplemente agregue lo siguiente a su archivo de compilación. Puedes ver que, en teoría, es bastante parecido a la solución para poner las fuentes en un JAR separado:

jar { from sourceSets.main.allSource }

La diferencia es que la está agregando al archivo JAR principal diciendo "jar" en lugar de sourcesJar.


Si estás usando Android:

task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = ''sources'' } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = ''javadoc'' from javadoc.destinationDir } artifacts { archives javadocJar archives sourcesJar }

de here


task sourcesJar(type: Jar, dependsOn: classes) { classifier = ''sources'' from sourceSets.main.allSource } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = ''javadoc'' from javadoc.destinationDir } artifacts { archives sourcesJar archives javadocJar }