Pregunta

¿Es posible hacerlo?

El entorno: Multimodule pom consta de 3 módulos: mm1, mm2, mm3. El módulo mm2 tiene mm1 como dependencia. Es posible construir pom padre sin ningún error.

La pregunta: ¿es posible construir un solo módulo mm2 (es decir, ejecutar maven desde el directorio base de mm2) sin instalar mm1 en el repositorio local?

Gracias.

¿Fue útil?

Solución

Sin instalación automática no, pero es posible construir solo proyectos seleccionados. Necesitas tener un módulo multi (supongo que lo tienes). En el modo reactor, cada comando debe ejecutarse desde la raíz del reactor .

Así que en tu caso:

mvn reactor: make -Dmake.folders = mm2

En este caso, construyes un módulo mm2 y módulos de los que depende (mm1).

Enlaces útiles:

A partir de ejemplos de libros, solo construyo la persistencia del proyecto y su modelo de dependencia. Otros proyectos están intactos con mvn reactor: make -Dmake.folders = sample-persist

alt text http: // www .sonatype.com / books / maven-book / reference / figs / web / running_aro-dependencies.png

Otro comando útil es reactor: make-dependents que construye proyectos que dependen de X.

Otros consejos

No estoy seguro de lo que quiere decir exactamente con " sin instalar mm1 en el repositorio local " ;. ¿Te refieres previamente a construir mm2 o nunca?

En caso de duda, quizás una de las nuevas opciones de compilación anunciadas en Las sugerencias y trucos de Maven: Opciones avanzadas de Reactor en la publicación del blog pueden ayudar:

  

Comenzando con el lanzamiento de Maven 2.1,   hay una nueva linea de comando de Maven   Opciones que te permiten manipular.   la forma en que Maven construirá   Proyectos multimodulares. Estos nuevos   las opciones son:

-rf, --resume-from
        Resume reactor from specified project
-pl, --projects
        Build specified reactor projects instead of all projects
-am, --also-make
        If project list is specified, also build projects required by the list
-amd, --also-make-dependents
        If project list is specified, also build projects that depend on projects on the list

Estaba pensando específicamente en las opciones -pl y -am . Para crear un subconjunto de los módulos, ejecute lo siguiente desde el directorio raíz

$ mvn --projects mm2 --also-make install

Sin embargo, no estoy seguro de que esto responda a tu pregunta (lo cual no es totalmente claro para mí).

Esto va en contra del principio de dependencias de Maven2. ¿Cuál es el interés de hacer eso exactamente?

Sin embargo, podemos imaginar definir la dependencia mm1 de mm2 como una dependencia system :

<dependency>
    <groupId>...</groupId>
    <artifactId>mm1</artifactId>
    <version>...</version>
    <scope>system</scope>
    <systemPath>../mm1/target/</systemPath>
</dependency>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top