java - proyectos - Maven no puede resolver la dependencia del módulo en el mismo proyecto de varios módulos
spring framework pdf español (2)
Al ejecutar comandos como
mvn dependency:build-classpath
o
mvn exec:java
Maven no puede resolver una dependencia de uno de mis módulos en otro.
[ERROR] Error al ejecutar el objetivo en el proyecto analizador-aplicación: no se pudieron resolver las dependencias para el proyecto proyecto_grupo: A: jar: 0.1-SNAPSHOT: no se pudo encontrar artefacto project_group: B: jar: 0.1-SNAPSHOT
La estructura del proyecto es la siguiente:
/pom.xml
/A/pom.xml
/B/pom.xml
El padre pom es el siguiente:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>project_group</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>0.1-SNAPSHOT</version>
<name>parent</name>
<modules>
<module>A</module>
<module>B</module>
</modules>
El primer módulo hijo (el que no resuelve la dependencia):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>A</artifactId>
<packaging>jar</packaging>
<name>A</name>
<dependencies>
<dependency>
<groupId>parent_group</groupId>
<artifactId>B</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
El segundo módulo hijo (la dependencia):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<name>B</name>
¿Ha ejecutado mvn clean install
al menos una vez en el proyecto para instalar las dependencias dentro de su repositorio local?
El reactor de Maven es raro de esa manera, mantiene módulos alrededor solo para ciertas tareas. Cuando se ejecuta un objetivo de compilación que solo hace algo para un subproyecto, incluso si Maven crea dependencias primero, no las mantiene en el reactor (a veces).
La instalación en el repositorio local es una solución alternativa, pero es horrible y debe evitarse cuando sea posible, ya que puede terminar fácilmente con resultados de compilación desactualizados.
Una solución alternativa menos fea es combinar dos objetivos de compilación, donde el segundo objetivo de compilación hace algo inofensivo, pero desencadena la adición al reactor en todos los subproyectos.
Como ejemplo, puede combinar la tarea que desee con las tareas ''compilar'' o ''paquete''.
También vea la respuesta más votada en Maven no reconoce los módulos hermanos al ejecutar la dependencia mvn: árbol