tutorial proyecto español ejecutar desde crear consola como comandos maven-2 module subproject

maven-2 - proyecto - maven tutorial pdf



¿Cómo configurar una dependencia de subproyecto en Maven sin desplegar tarros? (3)

Cuando hago esto, Maven intenta descargar el archivo sub-project1.jar, que no existe porque aún no está listo para el repositorio.

Ese es el comportamiento normal, Maven resuelve las dependencias a través del repositorio local, por lo que primero debe install subproyecto1. En realidad, la forma más común de lidiar con este tipo de situación es lanzar una compilación de reactor (una compilación de múltiples módulos) desde el padre.

Asumiendo que estás agregando módulos en el padre, es decir, tienes algo como esto declarado en el pom.xml "padre":

<modules> <module>sub-project1</module> <module>sub-project2</module>> </modules>

Simplemente cd en el directorio padre e inicie una construcción del reactor:

$ cd parent $ mvn install

Maven calculará el orden de compilación (deducido del gráfico orientado formado por módulos y sus dependencias) y ejecutará la install en todos los módulos en el orden calculado (primero el padre, luego el subproyecto1 y finalmente el subproyecto2 para su ejemplo particular).

Pero no use un alcance de tipo import , está haciendo un uso indebido aquí. Eliminarlo

Actualización: la pregunta se ha actualizado mientras respondía y los POM que se muestran no ilustran la situación dada en la pregunta original (dependencia invertida, error probable en la identificación del artefacto). Pero el enfoque sugerido aún se aplica. Elimine la <scope>import</scope> en la dependencia e inicie una compilación del reactor desde el padre.

Busqué en Google esto y parece que nadie tiene una respuesta, sin embargo, parece una cosa tan elemental que debería ser posible.

Tengo la siguiente estructura de proyecto:

parent ---sub-project1 ---sub-project2

subproyecto2 necesita tener subproyecto1 como dependencia.

Así que tengo esto en el pom del subproyecto2:

<dependencies> <dependency> <artifactId>sub-project1</artifactId> <groupId>mygroup</groupId> <version>1.0-SNAPSHOT</version> </dependency>

....

Cuando hago esto, Maven intenta descargar el archivo sub-project1.jar, que no existe porque aún no está listo para el repositorio.

Traté de poner una <scope>import</scope> en la dependencia, pero tampoco funcionó - el mismo resultado.

Entonces, ¿qué tengo que hacer para que Maven vea el subproyecto1 al construir el subproyecto 2?

EDITAR Aquí hay algunos fragmentos de pom:

Padre:

<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> <prerequisites> <maven>2.0.9</maven> </prerequisites> <modules> <module>sub-project1</module> <module>sub-project2</module> </modules> ....

subproyecto1:

<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/xsd/maven-4.0.0.xsd"> <parent> <artifactId>parent</artifactId> <groupId>mygroup</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>sub-project1</artifactId> ....

subproyecto2:

<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/xsd/maven-4.0.0.xsd"> <parent> <artifactId>parent</artifactId> <groupId>mygroup</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>sub-project1</artifactId> <dependencies> .... <dependency> <artifactId>sub-project2</artifactId> <groupId>mygroup</groupId> <version>1.0-SNAPSHOT</version> <scope>import</scope> </dependency> </dependencies>

El error que mvn clean install cuando obtuve la instalación de mvn clean install en el padre es:

[ERROR] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Compilation failure

Con muchas clases / paquetes no encontrados


Debería tener un master pom a nivel de padre, en el que enumerará los módulos de su proyecto.

<modules> <module>sub-project1</module> <module>sub-project2</module>> </modules>

En cada subproyecto, debe hacer referencia a su padre:

<parent> <artifactId>parent</artifactId> <groupId>mygroup</groupId> <version>1.0-SNAPSHOT</version> </parent>

Y especifica las dependencias entre el proyecto tal como lo hizo. Creo que te has perdido algunos de los pasos que he descrito.

Editar: debe emitir su instalación limpia mvn en el nivel principal.


Tanto Pascal como Maximiliano tienen razón. Al levantar todos mis fragmentos de pom, noté que tenía mis módulos mezclados: subproyecto2 antes del subproyecto1. Los cambié y aún obtuve los errores de clase no encontrados. Saqué el alcance como sugirió Pascal y funcionó.

Gracias por ayudar al novato de Maven.