我有一个(旧版)Java 项目,我正在重新配置它以使用 Gradle 构建。构建最终应该输出一些jar
档案,所以我将源分成对应于输出细分为档案的源集。
文件树看起来像这样:
- project root
- src
- setOne
- java
- ...
- resources
- ...
- setTwo
- java
- ...
- setThree
- java
- ...
- resources
- ...
- test
- java
- ...
- build.gradle
在build.gradle
我有以下内容:
apply plugin: 'java'
sourceSets {
setOne
setTwo {
compileClasspath += setOne.output
}
setThree
test
}
dependencies {
setOne group: 'foo', name: 'bar', version: '1.0'
}
// Setup dependencies so that compileJava compiles all source sets
// while avoiding cyclic dependencies for main and test
sourceSets.matching { ss ->
!(ss.getName().contains('test') || ss.getName().contains('main'))
}.each { ss ->
compileJava.dependsOn ss.getCompileJavaTaskName()
}
当我尝试构建它时,我从目标收到一堆compileSetTwoJava
关于某些类未解析的警告 - 指的是foobar
导入到setOne
. 我认为这是因为 Gradle 只提供setTwo
对内置类的访问权限setOne
- 但为什么它不能解决从setOne
进程中导入的类的依赖关系?
如何正确设置?