看起来如果我在我的 java Gradle 项目中使用 java-test-fixtures 插件,当 IntelliJ 导入它时,IDE 将始终将src/testFixtures
dir 标记为源文件夹(在模块设置,源选项卡中可见)。
然而,我build.gradle
在testFixturesApi
ortestFixturesImplementation
配置中添加的任何依赖项都被导入到 IDEA 项目中,其范围为Test
(在模块设置、依赖项选项卡中可见)。
因此,当我去构建我的项目时,使用项目构建并使用设置IntelliJ IDEA
而不是默认设置运行Gradle
(在设置 -> 构建、执行、部署 -> 构建工具 -> Gradle 中可见),构建器找不到deps 从那些 testFixtures 配置中,我得到一堆包不存在错误。
在使用向导设置新java-library
项目gradle init
并向其中添加“java-test-fixtures”插件后,可以轻松地重现此行为,然后将 dep 添加到测试夹具配置之一并将其导入到测试中的 java 文件中固定 SourceSet,然后切换 Build and run 设置并单击 build。
我正在使用 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