[英]Gradle compileTestJava fails during gradle clean build
我目前在gradle build中遇到这个奇怪的问题。 以下是详细信息。
我目前有以下结构的基于java-spring引导的多模块gradle项目
RootProjectDir
SubProjectA
SubProjectB
SubProjectCommon
每个项目的build.gradle文件如下
RootProjectDir build.gradle
dependencies {
compile project(":SubProjectA")
compile project(":SubProjectB")
compile project(":SubProjectCommon")
testCompile('org.springframework.boot:spring-boot-starter-test')
}
SubProjectA build.gradle
dependencies {
compile project(":SubProjectCommon")
}
SubProjectB build.gradle
dependencies {
compile project(":SubProjectCommon")
}
SubProjectCommon build.gradle
dependencies {
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile('org.springframework.boot:spring-boot-starter-web')
.....
.....
}
当我执行
gradle干净的构建
在SubProjectA的compileTestJava阶段,构建失败。 SubProjectA测试对SubProjectCommon中的类具有编译时依赖性。
如果我只执行以下内容
gradle:subProjectA compileTestJava
构建再次成功。
消息失败,提示无法解析SubProjectCommon类。
奇怪的是,在IntelliJ IDEA中,它没有显示SubProjectA测试类的任何编译问题,并且测试执行正常。 而且当我只是执行
摇篮清洁测试
一切正常。
我什至尝试像这样在SubProjectA build.gradle中将testCompile依赖项放在SubProjectCommon上
SubProjectA build.gradle
dependencies {
compile project(":SubProjectCommon")
testCompile project(":SubProjectCommon")
}
但仍然不起作用
PS:-我目前只为SubProjectA类编写测试用例。
IDE不能很好地遵循模块路径,尤其是Eclipse,因此通常所有内容都包含在内,因此不会遇到任何路径问题。
Gradle在不同项目之间进行了明确区分。
因此,如果您的类在测试文件夹中,则可能需要使用以下内容正确引用测试集:
testCompile project(":SubProjectCommon").sourceSets.test.output
要么
compile project(":SubProjectCommon").sourceSets.test.output
取决于哪个sourceSet正在使用另一个项目中的类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.