当您想创建一个包含test-classes的 jar 时,您可能希望重用这些类。有两种方法可以解决这个问题:
您可以生成一个包含您的测试类和资源的 jar。
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</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 目标中的配置进行更改使用 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>