5

メインクラスとテストクラスを.jarアーカイブに含めるようにGradleを構成するにはどうすればよいですか。現在、 build / libs ディレクトリにビルドされる.jarには、テストクラスがありません。 Gradleがそれらをproject-root/bin / com / package /にコンパイルした後、 project-root / src / main / java / com/packageからソースされたクラスのみが.jarに含まれます。

jar {
    manifest {
        attributes 'Implementation-Title': title, 'Implementation-Version': version, 'Main-Class': mainTestClass
    }
}

奇妙なことに、Gradleはコンパイルされたテストクラスをメインクラスと一緒にproject-root / bin / com / package /に入れていますが、奇妙なことに、それらを.jarアーカイブに入れないことを決定しています。では、.jarに、元々 project-root / src / test / java / com / package / ディレクトリにあるテストクラスも含めるにはどうすればよい ですか?

これが私が助けを必要としている私のbuild.gradleファイルです。

4

2 に答える 2

5

ドキュメントから:

Javaプラグインは、mainとtestという2つの標準ソースセットを定義します。メインソースセットには、JARファイルにコンパイルおよびアセンブルされた本番ソースコードが含まれています。テストソースセットには、JUnitまたはTestNGを使用してコンパイルおよび実行される単体テストソースコードが含まれています。

テストをjarに入れたいと思われる可能性は非常に高いですが、テストをメインのソースセットに追加するのが最も簡単な解決策になる可能性があります。

于 2012-11-19T03:08:58.180 に答える
1

私はこのように使用します

task jarr(type: Jar) {
    from sourceSets.main.output + sourceSets.toSet().output
    manifest {
        attributes(
                'Main-Class': 'main.Mainn',
                "Manifest-Version": "1.0",
                "Class-Path": configurations.compile.collect { it.getName() }.join(' ') + ' ' +
                        configurations.testRuntime.collect { it.getName() }.join(' ') + ' ' +
                        configurations.implementation.collect { it.getName() }.join(' ')
        )
    }

}
于 2021-03-04T19:12:09.270 に答える