当前位置: 首页 > 知识库问答 >
问题:

Gradle compileTestJava在Gradle clean构建期间失败

郎健柏
2023-03-14

我现在对gradle build有一个奇怪的问题。详情如下。

我目前有一个基于JavaSpring Boot的多模块gradle项目,其结构如下

  RootProjectDir
      SubProjectA
      SubProjectB
      SubProjectCommon

建造。每个项目的梯度文件如下所示

RootProjectDirbuild.gradle

dependencies {
 compile project(":SubProjectA")
 compile project(":SubProjectB")
 compile project(":SubProjectCommon")
 testCompile('org.springframework.boot:spring-boot-starter-test')
}

子项目构建。格拉德尔

dependencies {
 compile project(":SubProjectCommon")

}

SubProjectBbuild.gradle

dependencies {
 compile project(":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构建中对SubProjectCommon设置testCompile依赖项。像这样的渐变

子项目构建。格拉德尔

 dependencies {
     compile project(":SubProjectCommon")
     testCompile project(":SubProjectCommon")

    }

但还是不行

PS:-我目前只为子项目类编写了测试用例。

共有1个答案

廖琨
2023-03-14

IDE并没有很好地尊重模块路径,尤其是Eclipse,所以所有内容通常都包含在一起,所以您不会遇到任何路径问题。

Gradle对不同的项目进行了清晰的区分。

因此,如果您的类位于测试文件夹中,则可能需要使用以下方法正确引用测试集:

 testCompile project(":SubProjectCommon").sourceSets.test.output

或者

 compile project(":SubProjectCommon").sourceSets.test.output

取决于哪个源集正在使用其他项目中的类。

 类似资料:
  • 我目前使用的是带有hibernate3-maven-plugin的Hibernate 3.6.9。我使用目标hbm2ddl来生成一个sql模式文件。 该插件不支持Hibernate 4.1.2。如何生成架构文件?

  • 问题内容: 我在公司网络上构建Docker映像时遇到问题。我刚刚开始使用Docker,因此我有一个用于hello-world类型应用程序的以下Dockerfile: 当我在家中通过自己的无线网络在笔记本电脑上构建笔记本电脑时,这种方法效果很好。它拉下必要的依赖关系并正确构建映像。 但是,当我在公司网络上工作时,尝试从download.fedoraproject.org拉下RPM时,此同一个Dock

  • 例如。 可以更改为 ...什么的。 null

  • 任何人谁可以解决这个问题的颤振。请帮帮我。谢谢 失败:生成失败,出现异常。 > 其中:Build file'C:\hello\u everyone\android\app\Build。梯度线:1 错误:评估项目“: app”时出现问题。 在Project类型的project': app'上找不到参数[]org.gradle.api.方法Properties()。 > 尝试:使用--stacktra

  • 问题内容: 我在Objective-C中使用和获取应用程序的构建日期和时间。我找不到在Swift中获取此信息的方法。可能吗? 问题答案: 您可以使用,和。 原始答案: 在您的项目中创建一个新的Objective-C文件,当Xcode询问时,对创建桥接标头说是。 在这个新的Objective-C文件中,添加以下文件: 并在实现这些功能中: 现在转到桥接头并导入我们创建的。 现在回到您的任何Swift

  • 我想从我的内部存储库下载我的Ant项目(运行在Netbeans上)中的所有依赖项/JAR。 2.i.我的ivysettings.xml文件是: 2.二.我的ivySettings-file.properties是: ivy.settings.dir=C:\users\documents\NetBeansProjects\antProject\JavaApplication1, Cache.dir=