考虑定义抽象类的maven实用程序模块(模块1): AbstractFoo.java。在测试资源下,写了一个类的模型:FooMockup.java。还编写了一个测试类:AbstractFooTest.java。
现在考虑第二个模块(模块2),它包含一个使用AbstractFoo的类,并且还声明了测试用例:Bar.java和BarTest.java。 BarTest.java在创建Bar的实例时创建了一个FooMockup实例。
依赖性很简单。
模块1 src:什么都不依赖
模块1测试:取决于模块1 src
模块2 src:取决于模块1 src
模块2测试:取决于模块1和2 src以及模块1测试
这里没有循环依赖。使用maven时会出现问题。 Maven提供了两种导入测试依赖关系的方法:https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html
如果我使用“简单方法”,那么maven拒绝管理传递依赖,这既不容易也不首选。要使用“首选方式”,我必须将模块1的测试移动到自己的模块中。因为模型依赖于模块1 src,模块1测试依赖于模型,所以我必须将模型保存在与模型相同的包中。 maven标准是在src / test下保持测试,而不是在单独的模块中。因此,maven标准中的这种破坏不能很好地与某些IDE集成,并且需要在其他IDE中进行配置。
除了创建一个解决测试范围jar的传递测试依赖关系的自定义maven插件之外,有没有办法将AbstractFooTest保存在与AbstractFoo相同的模块中并且maven解决了FooMockup的传递依赖性?
答案 0 :(得分:1)
不可能。请参阅this。更具体地说,
这里的问题是设计测试依赖性不是传递性的
我们面临类似的问题并创建了测试基础设施项目,该项目将类保存在src / main中。从长远来看,这被证明是有用的,因为它可以更好地隔离项目。
如果您想坚持当前的方式,那么您只需要复制依赖项或将其保存在父pom中。