在多模块Maven项目中的模块之间共享src / test类
我有一个多模块的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
下它
。然后,我将data-test
作为的 测试范围 依赖项包括在内data
。不幸的是,这引入了循环依赖:data
uses data-
test,而且data-test
requires data
。
我想出了唯一的解决办法是把SampleDataHelper
下data
src/main一个下test
包,并希望没有真正的应用程序代码以往任何时候都调用它。
我如何SampleDataHelper
在模块之间共享我的课程 而不 放在下面src/main
?
回答:
您的消费者项目取决于您的数据项目,因此我们很高兴必须在消费者之前构建数据。结果,使用[注释中](http://codingdict.com/questions/109626建议的技术,我将确保您的Data项目包含您希望共享的所有测试代码,并配置POM以生成测试JAR:
<plugin> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
然后,您的Consumer项目将同时依赖于正常的Data JAR工件以及其他test-jar
工件,当然还有测试范围:
<dependency> <groupId>com.foo</groupId>
<artifactId>data</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
我已经在很多场合使用过这种方法,并且效果很好。
以上是 在多模块Maven项目中的模块之间共享src / test类 的全部内容, 来源链接: utcz.com/qa/413710.html