0

我正在尝试将 gradle 6.x 版本的多项目应用程序更新到 gradle 7.3,因为它是第一个支持 Java 17 的版本。但是,我无法解决由未在我的任何文件中声明的任务引起的问题build.gradle文件。错误如下:([] 件已编辑)

Execution failed for task ':[root module]:[module]:processIntTestResources'.
> Entry [filename] is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.3/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy for details.

我认为与集成测试的 sourceSet 相关联,但是,我从不为这些测试显式复制和文件。我还设置了所有复制说明,以便在重复处理方面具有此配置:

duplicatesStrategy = DuplicatesStrategy.INCLUDE

我还尝试将上述内容添加到失败的项目中,因为该设置仅对复制类型的任务或块有效。我绝不是 gradle 方面的专家,可以添加任何需要的相关信息,但我相信我已经包含了可能最相关的内容。我真的只是在寻找可以进一步调试此问题的方向。

4

1 回答 1

1

您没有展示太多关于如何配置集成测试的信息,但我遇到了类似的问题。拯救我的是 Tom Gregory 的这篇博文: 在 Gradle 中运行集成测试

由于链接可能会消失,所以让我复制并粘贴我发现相关的最重要部分,即关于添加了对集成测试的支持的新的(从 Gradle 7.3 起) JVM 测试套件插件。对我来说,这取代了我旧的集成测试配置:

testing {
    suites {
        integrationTest(JvmTestSuite) {
            dependencies {
                implementation project
            }
        }
    }
}
tasks.named('check') {
    dependsOn testing.suites.integrationTest
}

我还发现以下内容很有用,它不在上面的博客文章中,而是我之前的 Gradle 6 配置的剩余部分。这对我来说复制了“集成测试”的“测试”依赖项。这不是现在处理测试依赖的推荐方法(请参阅JVM 测试套件插件文档),但我仍然发现让我快速恢复运行很有用:

configurations {
    integrationTestImplementation.extendsFrom testImplementation
    integrationTestRuntime.extendsFrom testRuntime
}
于 2021-12-14T22:25:37.640 回答