5

如何配置 Gradle 以将主类和测试类包含到我的 .jar 存档中。目前,在build/libs目录中构建的 .jar 缺少我的测试类。 在 Gradle 将它们编译到project-root/bin/com/package/之后,它仅包含来自.jar 中的project-root/src/main/java/com/package的类。

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。主源集包含您的生产源代码,这些源代码被编译并组装成一个 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 回答