repositorio proyecto problemas errores error eliminar dependencias crear con borrar agregar java maven maven-2 dependencies

java - proyecto - Maven no reconoce los módulos hermanos cuando ejecuta la dependencia mvn: árbol



maven java (6)

Estoy intentando configurar un proyecto Maven de varios módulos, y aparentemente las dependencias entre módulos no se están configurando correctamente.

Yo tengo:

<modules> <module>commons</module> <module>storage</module> </modules>

en el POM padre (que tiene un pom de tipo de paquete) y luego subdirectorios commons/ y storage/ que definen POM JAR con el mismo nombre.

El almacenamiento depende de Commons.

En el directorio principal (principal), ejecuto mvn dependency:tree y veo:

[INFO] Building system [INFO] task-segment: [dependency:tree] [INFO] ------------------------------------------------------------------------ [INFO] [dependency:tree {execution: default-cli}] [INFO] domain:system:pom:1.0-SNAPSHOT [INFO] /- junit:junit:jar:3.8.1:test [INFO] ------------------------------------------------------------------------ [INFO] Building commons [INFO] task-segment: [dependency:tree] [INFO] ------------------------------------------------------------------------ [INFO] [dependency:tree {execution: default-cli}] ...correct tree... [INFO] ------------------------------------------------------------------------ [INFO] Building storage [INFO] task-segment: [dependency:tree] [INFO] ------------------------------------------------------------------------ Downloading: http://my.repo/artifactory/repo/domain/commons/1.0-SNAPSHOT/commons-1.0-SNAPSHOT.jar [INFO] Unable to find resource ''domain:commons:jar:1.0-SNAPSHOT'' in repository my.repo (http://my.repo/artifactory/repo) [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Failed to resolve artifact. Missing: ---------- 1) domain:commons:jar:1.0-SNAPSHOT

¿Por qué falla la dependencia de los "bienes comunes", aunque el reactor obviamente la ha visto porque procesa con éxito su árbol de dependencia? Definitivamente no debería ir a la red para encontrarlo, ya que está ahí ...

El pom para el almacenamiento:

<?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <parent> <artifactId>system</artifactId> <groupId>domain</groupId> <version>1.0-SNAPSHOT</version> </parent> <groupId>domain</groupId> <artifactId>storage</artifactId> <name>storage</name> <url>http://maven.apache.org</url> <dependencies> <!-- module dependencies --> <dependency> <groupId>domain</groupId> <artifactId>commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- other dependencies --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>

Gracias por cualquier sugerencia!

(Editar)

Para aclarar, lo que estoy buscando aquí es esto: no quiero tener que instalar el módulo X para construir el módulo Y, que depende de X, dado que ambos son módulos a los que se hace referencia desde el mismo POM principal. Esto tiene sentido intuitivo para mí que si tengo dos cosas en el mismo árbol de fuentes, no debería tener que instalar productos intermedios para continuar la compilación. Espero que mi pensamiento tenga sentido aquí ...


Al darse cuenta de esto es un hilo más antiguo, pero parece que o bien la herramienta evolucionó o esto podría haberse perdido la primera vez.

Es posible realizar una compilación que resuelva las dependencias sin instalar haciendo una compilación de reactor.

Si comienza su compilación en la matriz que describe la estructura del módulo de su proyecto, entonces sus dependencias entre los módulos se resolverán durante la compilación a través del reactor Maven interno.

Por supuesto, esta no es la solución perfecta, ya que no resuelve la construcción de un solo módulo individual dentro de la estructura. En este caso, Maven no tendrá las dependencias en su reactor y buscará resolverlo en el repositorio. Por lo tanto, para construcciones individuales, aún debe instalar las dependencias primero.

Aquí hay una reference describe esta situación.


Asegúrese de que el módulo que no se resuelve esté apuntando al padre correcto incluyendo las configuraciones en el archivo pom del módulo.


Como se discutió en este hilo de la lista de correo de maven , la meta de la dependencia: árbol por sí misma buscará cosas en el repositorio en lugar del reactor. Puede solucionar esto instalando mvn, como se sugirió anteriormente, o haciendo algo menos oneroso que invoca el reactor, como

mvn compile dependency:tree

Funciona para mi.


Creo que el problema es que cuando especifica una dependencia, Maven espera tenerlo como jar (o lo que sea) empaquetado y disponible desde al menos un repositorio local. Estoy seguro de que si ejecuta mvn install en su proyecto de commons primero, todo funcionará.


Lo único que funcionó para mí: cambiar a gradle :(

yo tengo

Parent +---dep1 +---war1 (using dep1)

y puedo simplemente grabar en war1 y usar mvn tomcat7: run-war. Siempre tengo que instalar todo el proyecto antes, a pesar de que war1 hace referencia a su padre y el padre hace referencia a war1 y dep1 (como módulos), por lo que se deben conocer todas las dependencias.

No entiendo cuál es el problema.


para mí, lo que me llevó a este hilo fue un problema similar y la solución fue asegurar que todos los módulos de dependencia pom tenían

<packaging>pom</packaging>

el padre tenía

pom

mi modelo dep tenía pom, así que no había ningún frasco para encontrar.