Używam mavena do tworzenia projektów wielomodułowych. Mój moduł 2 zależy od źródła modułu 1 w zakresie kompilacji i testów modułu 1 w zakresie testowym.
Moduł 2 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
To działa dobrze. Powiedz, że mój moduł 3 zależy od źródła Module1 i testów w czasie kompilacji.
Moduł 3 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
Kiedy uruchamiam mvn clean install
, moja kompilacja działa do modułu 3, kończy się niepowodzeniem w module 3, ponieważ nie może rozwiązać zależności testowej modułu 1. Następnie robię mvn install
sam moduł 3, wracam i uruchamiam mvn install
mój macierzysty pom, aby go zbudować. Jak mogę to naprawić?
maven-2
maven-plugin
user209947
źródło
źródło
Odpowiedzi:
Mam wątpliwości co do tego, co próbujesz zrobić, ale zakładam, że chcesz ponownie użyć testów, które utworzyłeś dla projektu (moduł1) w innym. Jak wyjaśniono w uwadze na dole Przewodnika na temat korzystania z załączonych testów :
Aby więc najpierw spakować skompilowane testy w pliku JAR i wdrożyć je w celu ogólnego ponownego wykorzystania, skonfiguruj
maven-jar-plugin
następujące elementy:<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>
Następnie zainstaluj / wdróż testowy artefakt JAR w zwykły sposób (za pomocą
mvn install
lubmvn deploy
).Na koniec, aby użyć testowego pliku JAR, należy określić zależność z określonym typem
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>
źródło
Jeśli chodzi o mój komentarz do pytania Pascalsa, myślę, że znalazłem stabilną odpowiedź:
<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>
Główną różnicą, jak widać tutaj, jest
<phase>
tag.Stworzę test-jar i będzie on dostępny w fazie kompilacji testów, a nie tylko po fazie pakowania.
Pracuje dla mnie.
źródło
Jak mówi https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html :
Przeczytaj ten artykuł, aby uzyskać szczegółowe informacje.
źródło