Как построить кувшин источников с gradle
Я работаю с проектом с открытым исходным кодом, который построен с помощью gradle. Я хотел бы сгенерировать файл (project) -sources.jar, который я могу загрузить в свою IDE (IntelliJ IDEA) и отладить проект. Я знаю, как загрузить файл, если я могу его создать.
Я просмотрел доступные gradle задачи для проекта, и нет ни одного, который генерирует файл jar источника.
Каков самый простой способ сгенерировать файл jar источника для этого проекта?
Добавление источника в файл jar, который содержит скомпилированные файлы классов, также будет прекрасным.
Ответы
Ответ 1
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
}
Ответ 2
Если вы используете 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
}
из здесь
Ответ 3
Если вы хотите добавить источники в файл JAR скомпилированных классов, который, как вы сказали, будет приемлемым, вы можете сделать это достаточно легко. Просто добавьте следующее в файл сборки. Вы можете видеть, что теоретически это похоже на решение для размещения источников в отдельном JAR:
jar {
from sourceSets.main.allSource
}
Разница в том, что вы добавляете его в основной файл JAR, говоря "jar" вместо sourceJar.
Ответ 4
это должно работать
assemble.dependsOn 'propertyJar'
task propertyJar(type: Jar) {
archiveName = "myJarName.jar"
from('src/main/resources') {
include '**'
}}
Ответ 5
Эквивалентом Kotlin DSL будет:
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)
}
}