Первый вариант
Поместите свой общий «тестовый» код в отдельный модуль (в 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
phase (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>
.