java - GradlecompileTestJava 在 gradle clean 构建期间失败

标签 java spring-boot gradle build.gradle

我目前在 gradle 构建方面遇到了这个奇怪的问题。以下是详细信息。

我目前有一个基于 java-spring boot 的多模块 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 clean build

在 SubProjectA 的 compileTestJava 阶段构建失败。 SubProjectA 测试对 SubProjectCommon 中的类具有编译时依赖性。

如果我只执行以下内容

gradle :subProjectA compileTestJava

构建再次成功。

失败并显示无法解析 SubProjectCommon 类的消息。

奇怪的是,在 IntelliJ IDEA 中,它没有显示 SubProjectA 测试类的任何编译问题,并且测试执行得很好。另外当我刚刚执行

gradle clean test

一切正常。

我什至尝试将 testCompile 依赖于 SubProjectA build.gradle 中的 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 使用其他项目中的类。

关于java - GradlecompileTestJava 在 gradle clean 构建期间失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759052/

相关文章:

java - MessageBodyProviderNotFoundException : I don't know how retrieve data send

spring-boot - 使用没有 jpa 的 spring-data-rest 但只有 JdbcTemplate

java - 为什么 Spring Boot 拒绝 GET 请求,因为 URL 未规范化?

java - 金融应用程序中必需的货币数据类型?

java - 如何在 NetBeans 6.7 中更改小程序查看器的尺寸

Android如何在使用gradle构建期间从外部文件夹添加可绘制对象

android - 无法使用AndroidStudio和Ubuntu执行gradlew任务-无法创建ScriptPluginFactory类型的服务

android-studio - 无法在Android Studio中运行录制的 Espresso 测试

java - 在 IntelliJ 文件搜索中忽略大文件

spring-boot - 命令行中的 server.port 不适用于 Spring Cloud 配置服务器和 eureka 服务器