gpt4 book ai didi

java - 如何使用其他子项目中的选定类作为 Gradle 中的测试依赖项

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:32 26 4
gpt4 key购买 nike

要从另一个子项目添加对测试源集的简单依赖,我可以这样做:

testCompile project(':subFoo1').sourceSets.test.output

此解决方案有效,但在许多情况下,它并不打算将整个源集添加为依赖项。例如,我只想使用测试数据构建器,在这种情况下,像 test-logback.xml(和常规测试)这样的文件会污染主模块中的测试类路径。

我用测试 JAR(它可以过滤内容,但作为依赖项存在问题)尝试了这个想法,并与 eachFileRecurse 进行了一些组合,但没有成功。

我的问题。如何仅添加给定源集的一个子集(例如,仅具有匹配 **/*Builder.* 模式的构建器的类)作为另一个子项目中的 testCompile 依赖项?

最佳答案

你会想要一些类似的东西:

上游/build.gradle:

apply plugin: "java"

task testJar(type: Jar) {
classifier = "tests"
from sourceSets.test.output
exclude "**/*Test.class"
}

artifacts {
testRuntime testJar
}

下游/build.gradle:

apply plugin: "java"

dependencies {
testCompile project(path: ":upstream", configuration: "testRuntime")
}

除了使用 testRuntime,您还可以声明(例如 configurations { testFixture })并使用自定义配置,这将使您更好地控制哪些外部依赖项是传递给下游项目。另一种选择是为要传递的测试代码部分声明一个单独的源集。 (这也会为您提供单独的编译和运行时配置。)

PS:接触另一个项目的对象模型(例如 project(':subFoo1').sourceSets.test.output)是有问题的,应该尽可能避免。

关于java - 如何使用其他子项目中的选定类作为 Gradle 中的测试依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com