我有一个多模块的Maven项目。为了这个示例,请考虑两个模块:
data
consumer
模块consumer
将模块data
作为依赖项。
模块data
声明了一堆核心类。有src/test
使用它们的测试。这些测试需要创建一些冗长的对象,因此我有一个带有一些实用程序方法的类来创建这些对象。实用程序类(SampleDataHelper
)在src/test
层次结构中。
我在consumer
模块中也进行了一些测试,这些测试需要创建一些长期存在的对象。我想在我的树中的测试中使用我的SampleDataHelper
类(在data src/test
中定义)consumer src/test
。不幸的是,即使data
是的依赖consumer
,consumer
也无法看到存在于下的类data src/test
。
为了解决这个问题,我想我可能会创造另一个模块(data-test
),并移动SampleDataHelper
下它src/main
。然后,我将data-test
作为的测试范围依赖性包括在内data
。不幸的是,这引入了循环依赖:data
uses data-test
,而且data-test
requires data
。
我想出了唯一的解决办法是把SampleDataHelper
下data src/main
一个下test
包,并希望没有真正的应用程序代码以往任何时候都调用它。
我如何SampleDataHelper
在模块之间共享我的课程而不放在下面src/main
?
data
),然后再编译第二个模块(consumer
)。
mvn package
,但是使用mvn install
或时,只要一步构建就可以了mvn deploy
。请注意。在我们的一个大型项目中,我们在junit的包装上有一个包装,TestBase
并且它也位于src/main
其中,我也不认为这是个好主意。