175

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

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

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

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

4

9 に答える 9

257
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
}
于 2012-07-13T17:05:53.217 に答える
55

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
}

ここから

于 2015-03-10T16:45:08.113 に答える
53

Gradle 6.0 でのソリューション

java/java-libraryプラグインを Gradle 6.0 以降で使用すると仮定するとsourcesJar、次の構成を使用してタスクを取得できます。

java {
    withSourcesJar()
    // and/or analogously use “withJavadocJar()” to get a “javadocJar” task
}

maven-publish/プラグイン (最近推奨)を追加で使用すると、メインの Java パブリケーションと共にアーティファクトivy-publishもパブリッシュされます。*-sources.jar

Gradle のドキュメントも参照してください。

于 2019-11-13T21:04:24.813 に答える
41

コンパイルされたクラスの JAR ファイルにソースを追加したい場合は、これも許容できると言っていましたが、それは簡単に行うことができます。以下をビルドファイルに追加するだけです。理論的には、ソースを別の JAR に入れるソリューションと非常によく似ていることがわかります。

 jar {
     from sourceSets.main.allSource
 }

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

于 2014-10-08T16:35:21.320 に答える
8

使用時:

  • グラドル: 5+
  • javamaven-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

于 2020-01-27T21:05:46.720 に答える