[英]java-maven2: How to include the a jar as depedency in pom so that I will be able to access test classes or classes in src/test/java folder
我有一组功能罐(超过3个)来测试我的源代码。 这些jar只包含测试类和辅助asserter类。 我正在创建一个新的性能jar,它将从这些jar导入所有功能测试,以便所有这些都可以同时运行。 但是当我将它们作为测试依赖项包含在当前jar的pom中时,我所能看到的是src / main / java中的类。 如何将这些功能罐包含为依赖jar,以便我也可以在src / test / java中引用类。 换句话说,我如何引用其他jar中的测试类。 我应该以什么方式将依赖包括在内。
谢谢你的支持。
将您的常用“测试”代码放在一个单独的模块中(在src/main/java
),并在需要公共代码的模块中使用test
范围声明对该模块的依赖:
<dependency>
<groupId>my.group.id</groupId>
<artifactId>testing-framework</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
这是一种常见的做法,这没有任何问题。
使用Maven JAR插件及其jar:test-jar
目标来构建当前项目的测试类的JAR,作为package
阶段的一部分( jar:test-jar
默认绑定在package
):
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
要使用上面创建的附加测试JAR,建议的方法是使用指定类型的test-jar
指定对主工件的依赖关系:
<project>
...
<dependencies>
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
请参阅“使用附加测试的指南”底部的讨论,了解为什么<type>test-jar</type>
应优先于<classifier>tests</classifier>
。
默认情况下, src/test/java
的代码不包含在jar中(我认为这是一件好事,即使我可以改变它也会谨慎)。
我发现将常用的测试代码放入一个单独的maven模块的src/main/java
中是一个非常好的做法。 然后,只需将此模块作为测试范围的依赖项包含在您需要的位置。
要么采用Lauri建议的方式,要么在没有专用测试工件的情况下使用稍微变化,但是在src / test / java中也有公共测试类的公共工件。
在此项目中,使用test-jar mojo创建并附加此项目的测试jar
现在在派生项目中,您可以包含这样的依赖项:
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<scope>test</scope>
<classifier>test</classifier>
</dependency>
这样,如果您已经有一个commons项目,则不需要创建单独的测试项目
mvn package
不会破坏测试类和资源。 所以你必须把依赖项放到src / main / java中。
每当我这样做时,我创建一个名为“someproj-testutils”的jar项目,并在正常的src/main/
locations中有辅助类或基本测试类和资源,然后引用someproj-testutils作为测试作用域dep。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.