Comment construire des sources jar avec gradle
Je travaille avec un projet open source construit avec gradle. Je voudrais générer un (projet)-sources.fichier jar que je peux charger dans mon IDE (IntelliJ IDEA) et déboguer à travers le projet. Je sais comment charger le fichier si je peux le générer.
J'ai regardé à travers les tâches de gradle disponibles pour le projet et il n'y en a pas qui génère un fichier JAR sources.
Quel est le moyen le plus simple de générer un fichier sources jar pour ce projet?
Ajouter le source dans le fichier jar qui contient les fichiers de classe compilés serait bien aussi.
5 réponses
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
}
Si vous utilisez 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
}
À Partir de ici
Si vous souhaitez Ajouter les sources au fichier JAR des classes compilées, ce que vous avez également dit être acceptable, Vous pouvez le faire assez facilement. Ajoutez simplement ce qui suit à votre fichier de construction. Vous pouvez voir que, en théorie, c'est tout à fait comme la solution pour mettre des sources dans un pot séparé:
jar {
from sourceSets.main.allSource
}
La différence est que vous l'ajoutez au fichier JAR principal en disant " jar " au lieu de sourcesJar.
Cela devrait fonctionner
assemble.dependsOn 'propertyJar'
task propertyJar(type: Jar) {
archiveName = "myJarName.jar"
from('src/main/resources') {
include '**'
}}
L'équivalent Kotlin DSL serait:
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)
}
}