Допустим, я установил следующий плагин в файл pom. xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<finalName>my-artifact-name</finalName>
</configuration>
</execution>
</executions>
</plugin>
и запускаю «mvn clean install». Maven создает два файла JAR в целевой библиотеке. Первый файл JAR компилирует исходные файлы, а второй файл JAR компилирует тестовые файлы. Оба этих jar будут иметь одинаковое имя артефакта .
Если я хочу использовать jar исходного кода в качестве зависимости в другом проекте, я могу поместить следующую зависимость в другой проект :
<dependency>
<groupId>groupId</groupId>
<artifactId>my-artifact-name</artifactId>
<scope>system</scope>
<type>jar</type>
<systemPath>${basedir}/lib/my-artifact-name.jar</systemPath>
</dependency>
Пока все хорошо.
Проблема возникает, если я также хочу добавить зависимость для тестовых файлов. В этом случае у меня будут две зависимости с одним и тем же groupId и artifactId и разными systemPath. Maven не будет читать две зависимости с одинаковыми groupId и artifactId. Только один из них будет прочитан.
Одно из решений, которое я могу придумать, - заставить Maven дать другое имя артефакта для тестирования. Вы знаете, как это сделать?