web-dev-qa-db-ja.com

gradleでソースjarをビルドする方法

私は、gradleで構築されたオープンソースプロジェクトで作業しています。 IDE(IntelliJ IDEA)にロードしてプロジェクトをデバッグできる(プロジェクト)-sources.jarファイルを生成したいと思います。ファイルを生成できる場合、ファイルをロードする方法を知っています。

プロジェクトで利用可能なgradleタスクを調べましたが、ソースjarファイルを生成するタスクはありません。

このプロジェクトのソースjarファイルを生成する最も簡単な方法は何ですか?

コンパイルされたクラスファイルを含むjarファイルにソースを追加しても問題ありません。

137
Paul D. Eden
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
}
229
JB Nizet

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 ここ

47
Giordano

コンパイル済みクラスのJARファイルにソースを追加するを希望する場合は、これも受け入れられると言いますが、これは十分簡単に​​行うことができます。ビルドファイルに次を追加するだけです。理論的には、ソースを別のJARに入れるソリューションに非常に似ていることがわかります。

 jar {
     from sourceSets.main.allSource
 }

違いは、sourcesJarの代わりに「jar」と言って、メインJARファイルに追加することです。

33
Michael Oryl

これは動作するはずです

assemble.dependsOn 'propertyJar'

task propertyJar(type: Jar) {
 archiveName = "myJarName.jar"
 from('src/main/resources') {
    include '**'
 }}
9
Ali

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)
    }
}
3
wheleph