繁体   English   中英

Gradle CleanBuild期间Gradle compileTestJava失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM