Java 在多模块Maven项目中,我应该将共享测试实用程序放在哪里?

Java 在多模块Maven项目中,我应该将共享测试实用程序放在哪里?,java,maven-2,osgi,packages,Java,Maven 2,Osgi,Packages,我可能不应该太在意这个,但我的项目有一个非常结构化的布局,我非常喜欢。有这么多的结构实际上已经证明是有用的,这一次,所以我真的不希望它再次变得混乱 首先,每个模块由几个Java包组成: com.mycompany.mysoftware.modulename com.mycompany.mysoftware.modulename.impl com.mycompany.mysoftware.modulename.osgi com.mycompany.mysoftware.modulename.tes

我可能不应该太在意这个,但我的项目有一个非常结构化的布局,我非常喜欢。有这么多的结构实际上已经证明是有用的,这一次,所以我真的不希望它再次变得混乱

首先,每个模块由几个Java包组成:

com.mycompany.mysoftware.modulename
com.mycompany.mysoftware.modulename.impl
com.mycompany.mysoftware.modulename.osgi
com.mycompany.mysoftware.modulename.test
主代码位于
.impl
中。其他模块使用的接口、一些枚举和一些数据容器类位于包中,没有后缀。
.OSGi
包中有特定于OSGi的代码(
BundleActivator
s等),而
.test
包中有单元测试

现在我有一些类伪造了一个模块,用于测试其他模块。我想知道我是否应该把它们放在
公共
模块的
.test
包中,该模块已经包含了主代码的共享库,或者我是否应该有一个新模块
test
,可以在Maven中为其设置不同的依赖范围


ETA:我遇到的一个问题是,我得到了循环依赖关系:如果我有两个模块,并且每个模块中的单元测试都需要另一个模块的伪代码,那么包含伪代码的模块依赖于包含接口的模块,而接口就是包含单元测试的模块。因此,伪代码应该与测试一起出现,但这会导致大量代码重复。或者,对于每个模块,我都制作了一个假模块,但这让我觉得它已经失控了……

您不希望您的测试代码被打包到主代码使用的公共模块中,是吗

因此,答案对我来说似乎显而易见:创建一个测试模块,并将其用作测试范围的依赖项

编辑:我正在回答下面问题更新中提到的问题)


关于循环依赖关系,如何将接口放在一个单独的模块中?

如果它位于该公共模块的test子目录中,它就不会被打包。不过,我想,依赖范围可能是最重要的方面。这是真的。但是,如果该代码位于公共模块的test子目录中,则不能在多个模块中依赖该代码。