Ho un progetto multi-modulo.Come far dipendere un modulo da un altro artefatto del modulo?
A: parent.
B: child1.
C: child2.
B verrà impacchettato per ottenere il file jar e quindi c utilizzerà questo file jar per compilare il codice.
In B, se corro mvn package
, si creerà b.jar
(soggiorni in B/target/jars
non in B/target
-per un altro scopo).
In C, ho bisogno di usare quello b.jar
per compilare il codice.
Ora, da A, quando corro: mvn package
. Per prima cosa, creo il file b.jar
per B.
Ma quando si tratta della fase di compilazione di C, sembra che C non riconosca b.jar
nel classpath (la compilazione riceve errori perché il codice di C non può importare la classe file da B).
La mia domanda è: come posso risolvere questo problema?
---------- Below
sono i file pom
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>
....
Proprio come una best practice (non correlata a questa domanda), i moduli B e C non devono dichiarare il proprio groupId e la propria versione; dovrebbero ereditarli dal genitore (modulo A) POM. Devono comunque dichiarare la propria confezione e artefatto. –