Я использую maven для создания многомодульного проекта. Мой модуль 2 зависит от модуля 1 src в области компиляции и тестов модуля 1 в области тестирования.
Модуль 2 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
Это прекрасно работает. Скажем, мой модуль 3 зависит от Module1 src и тестов во время компиляции.
Модуль 3 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
Когда я запускаю mvn clean install
, моя сборка работает до модуля 3, терпит неудачу в модуле 3, поскольку не может разрешить тестовую зависимость модуля 1. Затем я выполняю только mvn install
модуль 3, возвращаюсь и запускаю mvn install
свой родительский pom, чтобы он построился. Как я могу это исправить?
maven-2
maven-plugin
user209947
источник
источник
Ответы:
У меня есть сомнения относительно того, что вы пытаетесь сделать, но я предполагаю, что вы хотите повторно использовать тесты, которые вы создали для проекта (module1), в другом. Как поясняется в примечании внизу Руководства по использованию прилагаемых тестов :
Итак, сначала, чтобы упаковать скомпилированные тесты в JAR и развернуть их для общего повторного использования, настройте
maven-jar-plugin
следующим образом:<project> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Затем установите / разверните тестовый артефакт JAR как обычно (с помощью
mvn install
илиmvn deploy
).Наконец, чтобы использовать тестовый 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>
источник
Что касается моего комментария к вопросу Pascals, я думаю, что нашел стабильный ответ:
<plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.2</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> <phase>test-compile</phase> </execution> </executions> <configuration> <outputDirectory>${basedir}\target</outputDirectory> </configuration> </plugin> </plugins>
Основное отличие здесь, как вы видите, это
<phase>
тег.Я создам тестовую банку, и она будет доступна на этапе компиляции тестов, а не только после фазы пакета.
Работает для меня.
источник
Как говорит https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html :
Пожалуйста, прочтите эту статью для получения подробной информации.
источник