回答:
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
}
ここから
コンパイル済みクラスのJARファイルにソースを追加したい場合は、これも受け入れられると言っていれば、十分簡単に行うことができます。次のコードをビルドファイルに追加するだけです。理論的には、別のJARにソースを配置するためのソリューションに非常に似ていることがわかります。
jar {
from sourceSets.main.allSource
}
違いは、sourcesJarの代わりに「jar」と言って、メインJARファイルに追加することです。
Gradle 6.0以降でjava
/ java-library
プラグインを使用すると想定するとsourcesJar
、次の設定を使用してタスクを取得できます。
java {
withSourcesJar()
// and/or analogously use “withJavadocJar()” to get a “javadocJar” task
}
さらにmaven-publish
/ ivy-publish
プラグイン(最近推奨)を使用する*-sources.jar
と、メインのJavaパブリケーションとともにアーティファクトもパブリッシュされます。
Gradle docsも参照してください。
これはうまくいくはずです
assemble.dependsOn 'propertyJar'
task propertyJar(type: Jar) {
archiveName = "myJarName.jar"
from('src/main/resources') {
include '**'
}}
assemble.dependsOn
部分では、このタスクが自動的に実行されます。
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)
}
}
Project."java"
解決さにJavaPluginExtension
どの任意の提供していないsourceSets
かdocsDir
のプロパティを。
from(sourceSets["main"].allJava)
from(javadoc)
とfrom(sourceSets["main"].allSource)
使用する場合:
java
とmaven-publish
プラグインtask sourceJar(type: Jar) {
from sourceSets.main.allJava
archiveClassifier = "sources"
}
publishing {
publications {
maven(MavenPublication) {
from components.java
artifact sourceJar
}
}
}
https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html