当我将最初使用Eclipse构建的 gradle 项目导入IntelliJ时,我指出了一个问题。事实上,该项目是一个gradle-project,但是当我将它导入 IntelliJ 时,IDE 告诉我它删除了(一些)重复的内容根。
我得到一个气球 - 告诉我:
已删除重复的内容根
事件日志中的消息是:
hh:mm[=22:58] 检测到重复的内容根
模块 [someModuleName] 的路径 [/Users/.../someProject/someModule] 已从模块 [someModuleName.someSourceSetName] 中删除
此外还有 1 个路径被重复数据删除。有关详细信息,请参阅想法日志
一般来说,它是一个gradle-project,但我无法在 IntelliJ 中运行它。它在命令行 (./gradlew build)上使用gradle-Wrapper构建,但我想使用 IntelliJ 构建以改进使用 (recompile+reload) 和 IDE 的其他功能的使用。
我有以下模块:
A(A是我尝试构建的模块)
B(B是模块,我想重用模块A的sourceSets'main'和'testutils')
模块 A - 由 3 个源集(=main、test、testutils)组成:
src/main/java
src/test/java
src/testutils/java
模块 A具有 testutils(使用“main”)、test(使用“main”和“testutils”)、main(模块的生产 java-src)的依赖项
和模块 B,其中testutils
模块Amain
的源集在src 和tests
;
中是必需的。模块 B - 使用 sourceSet 'A/src/main/java' 和 'A/src/testutils/java':
所以我的 gradle 文件是(稍微缩短):
A/build.gradle:
apply plugin: 'maven'
sourceSets {
test.java.srcDirs +='src/testutils/java'
testutils
}
dependencies {
api project('someOtherProjectA')
...
testImplementation project('someOtherProjectZZ')
testutilsImplementation sourceSets.test.compileClasspath
}
task testutilsJar(type: Jar) {
from sourceSets.testutils.output
appendix 'testutils'
}
configurations {
testutils
}
artifacts {
testutils testutilsJar
}
uploadTestutils {
repositories {
mavenDeployer {
configuration = configurations.testutils
repository(url: mavenPublicRepository) {
authentication(userName: repoUsername, password: repoPassword)
}
}
}
}
publish.dependsOn uploadTestutils
B/build.gradlew:
dependencies {
api project('someOtherProjectB')
api "someOtherDependency"
...
testImplementation project('someOtherProjectC')
testImplementation project(path: ':A:theNameOfTheModule', configuration: 'testutils')
...
}
我的开发系统设置:
JDK: 11.0.4
Gradle-Wrapper with Version: gradle-5.5.1
IntelliJ IDEA 2020.1 (Ultimate Edition) - Build #IU-201.6668.121, built on April 8, 2020
Runtime version: 11.0.6+8-b765.25 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.15.4
Memory: 3987M
Cores: 16
我已经尝试过使用来自
我将非常感谢我如何管理我的“testutils”-SourceSet 的建议,它还使用嵌入式 IntelliJ-Build 构建封闭项目:
- 设置(=构建、执行、部署>构建工具> Gradle)
- 使用 > 'IntelliJ IDEA' 构建和运行(而不是 'Gradle')
- 使用 > 'IntelliJ IDEA'(而不是 'Gradle')运行测试