私は、gradleで構築されたオープンソースプロジェクトで作業しています。 IDE(IntelliJ IDEA)にロードしてプロジェクトをデバッグできる(プロジェクト)-sources.jarファイルを生成したいと思います。ファイルを生成できる場合、ファイルをロードする方法を知っています。
プロジェクトで利用可能なgradleタスクを調べましたが、ソースjarファイルを生成するタスクはありません。
このプロジェクトのソースjarファイルを生成する最も簡単な方法は何ですか?
コンパイルされたクラスファイルを含むjarファイルにソースを追加しても問題ありません。
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
}
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
}
from ここ
コンパイル済みクラスのJARファイルにソースを追加するを希望する場合は、これも受け入れられると言いますが、これは十分簡単に行うことができます。ビルドファイルに次を追加するだけです。理論的には、ソースを別のJARに入れるソリューションに非常に似ていることがわかります。
jar {
from sourceSets.main.allSource
}
違いは、sourcesJarの代わりに「jar」と言って、メインJARファイルに追加することです。
これは動作するはずです
assemble.dependsOn 'propertyJar'
task propertyJar(type: Jar) {
archiveName = "myJarName.jar"
from('src/main/resources') {
include '**'
}}
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)
}
}