Je travaille avec un projet open source construit avec gradle. Je souhaite générer un fichier (projet) -sources.jar que je peux charger dans mon IDE (IntelliJ IDEA)) et procéder au débogage via le projet. Je sais comment charger le fichier si je le peux. le générer.
J'ai parcouru les tâches de gradles disponibles pour le projet et aucune ne génère de fichier JAR de sources.
Quel est le moyen le plus simple de générer un fichier jar de sources pour ce projet?
Ajouter la source dans le fichier jar contenant les fichiers de classe compilés conviendrait également.
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
}
de ici
Si vous souhaitez ajouter les sources au fichier JAR des classes compilées, que vous avez également déclaré acceptable, vous pouvez le faire assez facilement. Ajoutez simplement ce qui suit à votre fichier de construction. Vous pouvez voir qu'en théorie, c'est tout à fait la solution pour mettre des sources dans un fichier JAR 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)
}
}