sourcesJar タスク
Source Jar は、Java Plugin で 提供される withSourcesJar()
メソッドにより、 sourcesJar
タスクを追加することができる(プロジェクトに sourcesJar という名前の既タスクが存在する場合には、タスクは作成されない)。
java { withSourcesJar() }
このタスクは、sourceSets.main
のソースを、classifier sources
として Jar パッケージを作成する。
sourcesJar
タスクは assemble
タスクの依存として登録される。
例えば以下のように Uber Jar を作成していたとしても、Source Jar は対象プロジェクトのソースしか含まれない。
tasks.named<Jar>("jar") { duplicatesStrategy = DuplicatesStrategy.EXCLUDE dependsOn(configurations.runtimeClasspath) from({ configurations.runtimeClasspath.get() .filter { it.name.endsWith("jar") } .map { zipTree(it) } }) }
sourcesJar へのソース追加
以下のようにソースを追加する。
val copySources: Configuration by configurations.creating dependencies { implementation(project(":common")) implementation("org.apache.commons:commons-lang3:3.12.0") copySources("org.apache.commons:commons-lang3:3.12.0:sources") } tasks.named<Jar>("sourcesJar") { from(project(":common").sourceSets.main.get().allSource) from({ copySources.map { zipTree(it) } }) }
サブプロジェクトからソースを追加するには、単にサブプロジェクトの sourceSets.main
を追加する。
依存ライブラリは、classifier sources
として(Source Jar が公開されているのもに限る) configuration を作成して取込できる。