Eu uso o maven para construir um projeto de vários módulos. Meu módulo 2 depende do módulo 1 src no escopo de compilação e dos testes do módulo 1 no escopo do teste.
Módulo 2 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
Isso funciona bem. Digamos que meu módulo 3 dependa do src do Módulo1 e dos testes em tempo de compilação.
Módulo 3 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
Quando eu executo mvn clean install
, meu build é executado até o módulo 3, falha no módulo 3 porque não conseguiu resolver a dependência de teste do módulo 1 Então eu faço um mvn install
no módulo 3 sozinho, volto e corro mvn install
no meu pai pom para construí-lo. Como posso consertar isso?
maven-2
maven-plugin
user209947
fonte
fonte
Respostas:
Tenho uma dúvida sobre o que você está tentando fazer, mas assumirei que deseja reutilizar os testes que criou para um projeto (módulo1) em outro. Conforme explicado na nota na parte inferior do Guia para usar os testes anexados :
Portanto, primeiro, para empacotar os testes compilados em um JAR e implantá-los para reutilização geral, configure o da
maven-jar-plugin
seguinte maneira:<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>
Em seguida, instale / implante o artefato JAR de teste normalmente (usando
mvn install
oumvn deploy
).Finalmente, para usar o JAR de teste, você deve especificar uma dependência com um tipo especificado de
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>
fonte
Com relação ao meu comentário sobre a pergunta de Pascals, acho que encontrei uma resposta adequada:
<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>
A principal diferença aqui, como você pode ver aqui, é a
<phase>
tag.Vou criar o test-jar e ele estará disponível na fase de compilação dos testes e não apenas após a fase de pacote.
Funciona para mim.
fonte
Como https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html diz:
Por favor, leia esse artigo para detalhes.
fonte