Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gradle:如何管理测试实用程序的循环依赖关系_Java_Testing_Dependency Management_Gradle_Circular Dependency - Fatal编程技术网

Java Gradle:如何管理测试实用程序的循环依赖关系

Java Gradle:如何管理测试实用程序的循环依赖关系,java,testing,dependency-management,gradle,circular-dependency,Java,Testing,Dependency Management,Gradle,Circular Dependency,我正在与Gradle和Jenkins一起为我的Java项目建立一个自动化的构建测试发布周期。AppTestFramework是我为记录、编写脚本和重放测试而编写的实用程序。它对应用程序有一些编译时依赖性。应用程序的JUnit测试反过来使用AppTestFramework运行测试 应用程序的build.gradle: dependencies { ... testCompile("org.kylewm:AppTestFramework:latest.integration") } dep

我正在与Gradle和Jenkins一起为我的Java项目建立一个自动化的构建测试发布周期。AppTestFramework是我为记录、编写脚本和重放测试而编写的实用程序。它对应用程序有一些编译时依赖性。应用程序的JUnit测试反过来使用AppTestFramework运行测试

应用程序的build.gradle:

dependencies {
  ...
  testCompile("org.kylewm:AppTestFramework:latest.integration")
}
dependencies {
  compile("org.kylewm:App:latest.integration")
}
AppTestFramework的build.gradle:

dependencies {
  ...
  testCompile("org.kylewm:AppTestFramework:latest.integration")
}
dependencies {
  compile("org.kylewm:App:latest.integration")
}
我不知道是否应该将其描述为循环依赖,因为我可以将其分为三个项目:

  • 应用程序
  • AppTestFramework依赖于应用程序
  • AppUnitTests取决于应用程序、AppTestFramework

我更愿意把它们作为单独的项目。如果它们必须是另一个build.gradle的子项目,那就可以了,不过如果我有其他选择的话,我想避免它。谢谢

魔鬼代言人:如果代码紧密耦合,为什么要将它们作为单独的项目


一种解决方案是保留一个项目,但生成几个jar,以便其他项目可以导入
app.jar
app testsupport.jar

testsupport与app紧密耦合,但只有app的测试与testsupport耦合。。。所以我希望我能把它们分开(因为这个应用已经很可怕了)。也就是说,你提出了一个很好的观点——如果一切都在一个项目中,事情肯定会更简单。我也有同样的问题,需要将AppTestFramework放在一个单独的模块/项目上发布,这样AppTestFramework就可以被其他项目使用。那么,允许gradle构建它的解决方案是什么呢?将应用程序和AppUnitTests分离到不同的模块/项目中?没有其他解决办法吗?