Maven:在项目B中使用项目A的特定测试类

Maven:在项目B中使用项目A的特定测试类,maven,junit,dependencies,project-structure,Maven,Junit,Dependencies,Project Structure,我有项目A和B,其中B需要A。在项目A中,我有一个实用程序类UC,它应该只能用于JUnit测试,因此驻留在项目A的src/test/java中。只要我在A中编写测试,我就可以访问UC。然而,如果我运行Maven并希望它在B中执行测试,我会得到编译器错误,因为UC在B中不可访问 显然,Eclipse在编译某些东西时(即,当我在B中编写测试时,它知道UC),包括了所有源文件夹中的所有类,而Maven在A的最终版本中删除了所有测试类 我的问题是:当我用Maven运行UC的测试时,我需要做什么才能在B中

我有项目A和B,其中B需要A。在项目A中,我有一个实用程序类UC,它应该只能用于JUnit测试,因此驻留在项目A的
src/test/java
中。只要我在A中编写测试,我就可以访问UC。然而,如果我运行Maven并希望它在B中执行测试,我会得到编译器错误,因为UC在B中不可访问

显然,Eclipse在编译某些东西时(即,当我在B中编写测试时,它知道UC),包括了所有源文件夹中的所有类,而Maven在A的最终版本中删除了所有测试类

我的问题是:当我用Maven运行UC的测试时,我需要做什么才能在B中访问UC

请理解我是Maven的新手,我想也有人问过类似的问题。但是,我无法将写在那里的内容转换为我的问题并修复它


我希望能清楚地知道我想做什么……

在仔细研究之后,我终于找到了一个解决方案:

一,

我在其他问题上偶尔也会看到这种模式,所以我想我只是不太明白。。。哦,好吧*眼卷*


1原始链接停止工作。我(不介意这种笨拙的布局)

maven jar插件页面——提到了两种方法。简单的方法是创建一个测试jar工件,然后引用它。(公开抄袭自官方网页的片段)


...
...
org.apache.maven.plugins
maven jar插件
2.4
试验罐
...
...
然后在需要它的项目中使用测试jar类型和测试范围来参考它:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>groupId</groupId>
      <artifactId>artifactId</artifactId>
      <type>test-jar</type>
      <version>version</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project>

...
groupId
人工的
试验罐
版本
测试
...

如果你需要做很多事情,你应该考虑把测试代码移到单独的项目。

我总是发现测试罐很笨拙。它们有点奇怪,因为它们只会在新部署到存储库时使用。否则,其他项目看不到更改。这就是为什么我建议只创建普通项目,您可以使用这些项目将测试助手放入其中,然后使用测试范围依赖项引用它们。

谢谢您留下我的答案并添加您自己的答案;)@sjngm当我发现您的回答中给出的说明与Maven的官方文档不同时,我回过头来。分类与类型不同。感谢您提供有用的工作示例。另外,请注意还有一个开放的bug:跳过测试时不会生成测试jar!这让我有几分钟的时间感到恶心;)@boly38对于任何数量不多的测试类,您都应该放弃生成测试jar,因为它变得非常笨拙。
<project>
  ...
  <dependencies>
    <dependency>
      <groupId>groupId</groupId>
      <artifactId>artifactId</artifactId>
      <type>test-jar</type>
      <version>version</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project>