Bja*_*sen 5 dependencies maven-2 unit-testing circular-dependency maven
我的设置就是这个.我有项目A
,测试项目取决于A
:
A <- A_t
Run Code Online (Sandbox Code Playgroud)
我还有其他项目取决于A
(和他们的测试):
A <- B <- B_t
Run Code Online (Sandbox Code Playgroud)
为了简化一些测试,我引入了一个新的库来帮助测试基于以下内容的测试A
:
A <- Atesthelper
Run Code Online (Sandbox Code Playgroud)
所以A_t
(和B_t
)将取决于这个测试助手,如下所示:
A <- A_t
^ |
| v
Atesthelper
Run Code Online (Sandbox Code Playgroud)
但是,当我创建Maven项目(pom.xml)时,似乎通常将项目和该项目的测试捆绑在同一个pom.xml中.我为它创建了一个新的pom.xmlAtesthelper
所以现在变成:
(A <- A_t)
^ |
| v
Atesthelper
Run Code Online (Sandbox Code Playgroud)
这是循环依赖.是否有可能在pom.xml中以某种方式指定它Atesthelper
只是测试构建目标的依赖项,而不是A
模块本身?
所以构建顺序应该是:A,Atesthelper,A_t.即,在同一个pom中指定的A和A_t不应该同时构建.
提前致谢.
如果我理解正确,您的主要目标是重用测试类.A_t和Atesthelper不是Maven项目,它们是测试.
让Maven从你的src/test/java创建一个jar.请参阅http://maven.apache.org/guides/mini/guide-attached-tests.html
在构建A之后,您将获得A.jar和A-tests.jar.A-tests.jar将包括Atesthelper和A_t.
将B的依赖关系设置为A-tests.jar(<type>test-jar</type>)
.
您需要解决的问题是从Atesthelper到A 的依赖关系,然后其他一切都会正常工作:A依赖于Atesthelper,B依赖于Atesthelper,并且A和B都将包含源和测试。Atesthelper将包含在A和B中的范围测试中。这就是你的目标状态。
你怎么到那的?您需要将Atesthelper所依赖的项目提取到单独的项目中。通常,这些是接口或其他常见功能,无论如何都应该将其放入单独的项目中 - 让我们将其称为ACommon。所以你的目标布局应该是这样的:
ACommon <- Atesthelper
^ ^
| /
A (and also B)
Run Code Online (Sandbox Code Playgroud)
Atesthelper依赖于A中的哪种功能?您可以将其移至单独的项目(ACommon)吗?
归档时间: |
|
查看次数: |
3479 次 |
最近记录: |