Tengo un proyecto de varios módulos.¿Cómo hacer que un módulo dependa de otro artefacto de módulo?
A: parent.
B: child1.
C: child2.
B será empaquetado para obtener el archivo jar y luego c utilizará este archivo jar para compilar el código.
En B, si me quedo mvn package
, se creará b.jar
(estancias en B/target/jars
no en B/target
-por otro propósito).
En C, necesito usar ese b.jar
para compilar el código.
Ahora, desde A, cuando ejecuto: mvn package
. En primer lugar, tengo éxito para crear b.jar
archivo para B.
Pero cuando se trata de la fase de compilación de C, parece que C no reconoce b.jar
en la ruta de clase (la compilación obtiene errores porque el código de C no puede importar la clase archivo de B).
Mi pregunta es: ¿Cómo puedo resolver este problema?
---------- Below
son los archivos 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>
....
Así como una mejor práctica (no relacionada con esta cuestión), los módulos B y C no debe declarar su propia groupId y la versión; deberían heredar estos del padre (módulo A) POM. Sin embargo, todavía necesitan declarar su propio empaque y artefacto. –