当您想创建一个包含test-classes的 jar 时,您可能希望重用这些类。有两种方法可以解决这个问题:
您可以生成一个包含您的测试类和资源的 jar。
<project> ... <build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.2</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> ... </plugins> </build> ... </project>
要在其他项目中重用此工件,您必须使用类型 test-jar 声明此依赖项:
<project> ... <dependencies> <dependency> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> <classifier>tests</classifier> <type>test-jar</type> <version>version</version> <scope>test</scope> </dependency> </dependencies> ... </project>
基于这样的配置,将生成两个 jar 文件。第一个包含来自src/main/java的类,而第二个包含来自src/test/java的类。生成的 jar 文件遵循第一个命名模式artifactId-version.jar和第二个命名模式 artifactId -version-classifier.jar。部件artifactId版本将替换为项目pom.xml文件中给出的值。分类器将设置为测试,这是 maven-jar-plugin 的默认设置,如果需要,可以使用 jar 目标中的配置进行更改.
注意:此解决方案的缺点是您不会自动获得传递测试范围的依赖项。Maven 仅解决编译时依赖项,因此您必须手动添加所有其他必需的测试范围依赖项。
为了让 Maven 解决所有test范围的传递依赖项,您应该创建一个单独的项目。
<project> <groupId>groupId</groupId> <artifactId>artifactId-tests</artifactId> <version>version</version> ... </project>
现在你有了可重用的测试类,你可以像以前那样引用它:
<project> ... <dependencies> <dependency> <groupId>groupId</groupId> <artifactId>artifactId-tests</artifactId> <version>version</version> <scope>test</scope> </dependency> </dependencies> ... </project>