【发布时间】:2013-01-21 06:51:00
【问题描述】:
我有一个多模块 Maven 项目。为了这个例子,考虑两个模块:
dataconsumer
模块 consumer 具有模块 data 作为依赖项。
模块data 声明了一堆核心类。 src/test 下有使用它们的测试。这些测试需要一些冗长的对象创建,所以我有一个类,其中包含一些实用方法来创建这些对象。此实用程序类 (SampleDataHelper) 位于 src/test 层次结构中。
我还在consumer 模块中进行了一些测试,需要创建其中一些冗长的对象。我想在我的consumer src/test 树中的测试中使用我的SampleDataHelper 类(在data src/test 中定义)。不幸的是,即使data 是consumer 的依赖项,consumer 也看不到data src/test 下存在的类。
为了解决这个问题,我想我可以创建 另一个 模块 (data-test),并将 SampleDataHelper 移动到 src/main 下。然后我会将data-test 包含为data 的测试范围 依赖项。不幸的是,这引入了循环依赖:data 使用data-test,但data-test 也需要data。
我想出的唯一解决方案是将SampleDataHelper 放在data src/main 下的test 包下,并希望没有真正的应用程序代码调用它。
我怎样才能在模块之间共享我的SampleDataHelper 类而不将它放在src/main 下?
【问题讨论】:
-
查看this answer。我认为它应该对你有所帮助。
-
@AndrewLogvinov:您的链接答案不需要“两步”构建吗?在编译第二个模块 (
consumer) 之前,首先构建并部署一个模块 (data)。 -
我认为如果您使用
mvn package,您可能会遇到一些问题,但是当您使用mvn install或@987654357 时,它应该可以在一步构建中正常工作@。只是一个简短的说明。在我们的一个大型项目中,我们对 junit 的TestBase进行了包装,它位于src/main,我也不认为这是一个好主意。