gpt4 book ai didi

gradle - java-test-fixtures 插件是否与 Build and run using IntelliJ IDEA 设置不兼容?

转载 作者:行者123 更新时间:2023-12-03 03:45:36 25 4
gpt4 key购买 nike

看起来如果我在我的 java Gradle 项目中使用 java-test-fixtures 插件,当 IntelliJ 导入它时,IDE 将始终标记 src/testFixtures dir 作为源文件夹(在模块设置,源选项卡中可见)。

然而,我在 build.gradle 中添加的任何依赖项到testFixturesApitestFixturesImplementation配置被导入到 IDEA 项目中,范围为 Test (在模块设置,依赖项选项卡中可见)。

所以当我去构建我的项目时,使用项目构建并使用 IntelliJ IDEA 的设置运行而不是 Gradle 的默认值(在 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 中可见),构建器无法从那些 testFixtures 配置中找到 deps,并且我得到一堆 package does not exist 错误。

设置新的 java-library 后,可以轻松重现此行为。项目使用 gradle init向导并向其添加“java-test-fixtures”插件,然后将 dep 添加到测试夹具配置之一并将其导入到测试夹具 SourceSet 中的 java 文件中,然后切换构建和运行设置并单击构建。

我正在使用 Gradle 6.0 和 IntelliJ 2019.3 BETA。

我尝试将 testFixtures 源目录明确标记为测试源文件夹:

idea {
module {
testSourceDirs += project.sourceSets.testFixtures.allJava.srcDirs
}
}

但是 IDEA Gradle 导入似乎并不尊重这一点,我怀疑它无论如何都是错误的解决方案。

有什么方法可以让 java-test-fixtures 插件与 IDEA 构建器配合得很好,而不会从 testFixturesApi 泄露我的部门?配置到 api配置?

更新

所以我的团队在 IntelliJ 注册表中启用了“gradle.settings.showDeprecatedSettings”选项,目前是 不是 使用推荐的“每个 SourceSet 的模块”选项 - 我们每个项目都有一个模块。此问题仅适用于每个项目的模块,已弃用。见: https://youtrack.jetbrains.com/issue/IDEA-222172

最佳答案

所以我找到了一种解决方法:

添加新配置:

configurations {
ideaTestFixturesApi
}

使现有的 testFixturesApi 配置扩展您的新配置:
configurations.testFixturesApi.extendsFrom(ideaTestFixturesApi)

testFixturesApi 迁移所有依赖项-> ideaTestFixturesApi ,此时您的 Gradle 构建应该再次运行,并且您的 IntelliJ 构建应该以与以前相同的方式保持中断。

申请 idea Gralde 插件并切换新配置的范围进行测试
plugins {
id 'idea'
}

// ...

idea {
module {
scopes.COMPILE.plus += [configurations.ideaTestFixturesApi]
}
}

然后,当您通过 Gradle View 刷新项目时,您会看到每个 dep 都标记为 COMPILE范围,这应该允许 IntelliJ 构建成功。你可以对 testFixturesImplementation 做同样的事情.

不太理想,但似乎没有任何方法可以强制 testFixtures sourceSet 显示为测试源目录,这是我现在要使用的解决方法。

关于gradle - java-test-fixtures 插件是否与 Build and run using IntelliJ IDEA 设置不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58963413/

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