gpt4 book ai didi

java - 在多模块 maven 项目中的模块之间共享 src/test 类

转载 作者:IT老高 更新时间:2023-10-28 11:23:56 26 4
gpt4 key购买 nike

我有一个多模块 Maven 项目。为了这个例子,考虑两个模块:

  • 数据
  • 消费者

模块 consumer 具有模块 data 作为依赖项。

Module data 声明了一堆核心类。 src/test 下有使用它们的测试。这些测试需要一些冗长的对象创建,所以我有一个类,其中包含一些实用方法来创建这些对象。此实用程序类 (SampleDataHelper) 位于 src/test 层次结构中。

我在 consumer 模块中也有一些测试,需要创建其中一些冗长的对象。我想在驻留在我的 consumer src/test 树中的测试中使用我的 SampleDataHelper 类(在 data src/test 中定义)。不幸的是,即使 dataconsumer 的依赖项,consumer 也看不到 data src/test< 下存在的类

为了解决这个问题,我想我可以创建 另一个 模块(data-test),并将 SampleDataHelper 移到 src/main。然后我将包含 data-test 作为 datatest scope 依赖项。不幸的是,这引入了循环依赖:data 使用 data-test,但 data-test 也需要 data

我想出的唯一解决方案是将 SampleDataHelper 放在 data src/main 下的 test 包下,希望没有真正的应用程序代码会调用它。

如何在模块之间共享我的 SampleDataHelper而不将它放在 src/main 下?

最佳答案

您的 Consumer 项目取决于您的 Data 项目,因此我们很高兴 Data 必须在 Consumer 之前构建。因此,使用建议的技术 in the comments ,我会确保您的数据项目包含您希望共享和配置 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 Artifact ,以及附加的 test-jar Artifact ,当然还有测试范围:

<dependency>
<groupId>com.foo</groupId>
<artifactId>data</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

我在很多场合都使用过这种方法,效果很好。

关于java - 在多模块 maven 项目中的模块之间共享 src/test 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14722873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com