Mam maven wielomodułowy projekt.Jak sprawić, aby jeden moduł był zależny od innego artefaktu modułu?
A: parent.
B: child1.
C: child2.
B zostanie spakowany, aby pobrać plik jar, a następnie c użyje tego pliku jar, aby skompilować kod.
w B, jeśli biegnę mvn package
, to stworzy b.jar
(pobyty w B/target/jars
nie w B/target
-dla innym celu).
W C, muszę użyć tego b.jar
do kompilacji kodu.
Teraz, od A, kiedy biegnę: mvn package
. Po pierwsze, udało mi się stworzyć plik b.jar
dla B.
Ale kiedy dojdzie do fazy kompilacji C, wygląda na to, że C nie rozpoznaje b.jar
w ścieżce klas (kompilacja dostaje błędy, ponieważ kod C nie może zaimportować klasy plik z B).
Moje pytanie brzmi: jak mogę rozwiązać ten problem?
---------- Below
są POM pliki
A: pom.xml
<groupId>AAA</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>C</module>
<module>B</module>
</modules>
B: pom.xml
<groupId>AAA</groupId>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<parent>
<artifactId>A</artifactId>
<groupId>AAA</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
C: pom.xml
<parent>
<artifactId>A</artifactId>
<groupId>AAA</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>AAA</groupId>
<artifactId>C</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>AAA</groupId>
<artifactId>B</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
....
Tak jak najlepsza praktyka (niezwiązana z tym pytaniem), moduły B i C nie powinny deklarować własnego groupId i wersji; powinny je odziedziczyć po rodzicu (moduł A) POM. Nadal jednak muszą zadeklarować własne opakowanie i artefakt. –