2009-08-24 12 views
6

¿Es posible construir múltiples artefactos en un solo archivo POM? No se trata de crear ensamblajes múltiples, sino que los artefactos tienen diferentes compilaciones y dependencias pero hacen referencia a la misma fuente.Maven - Varias compilaciones en una sola pom

Por ej. un artefacto que necesito construir es un archivo WAR que excluye ciertos archivos AspectJ de la compilación y el otro es un archivo JAR que necesita esos Aspectos que se tejen durante la compilación.

En este momento, tengo 2 pom.xml que se ejecutan en 2 copias de la misma fuente para producir los artefactos deseados. ¿Se puede hacer esto en un solo POM?

Respuesta

9

En general, es una mala práctica intentar hacer lo que está buscando, aunque podría hacerse con perfiles y conjuntos que recomendaría en contra.

Así es como lo abordaría.

Separe el código en un proyecto jar y configure el proyecto jar para usar el complemento compilador aspectj. Haga que el proyecto de guerra tenga una dependencia en el proyecto jar y el proyecto jar tenga una dependencia en aspectjrt. Las dependencias jar que desea excluir se pueden especificar como ámbito "proporcionado" para que no se incluyan en la compilación o se excluyan configurando la dependencia jar para excluir esas dependencias transitivas (consulte la sección Exclusión transitiva de dependencia sección Dependency Mechanism documentation para obtener detalles .

Cuando la guerra se construye, las dependencias de compilación de ámbito (y sus dependencias transitivas) se incluirá en el directorio WEB-INF/lib de la guerra (es decir aspectjrt será incluido también).

Si necesita construir ambos proyectos a la vez definir un pom del agregador y especificar los proyectos jar y war como módulos.

0

hmm, creo que la manera más fácil sería un super-pom, usando la sintaxis. Parece que sería más fácil de mantener que un pom con dos objetivos.

Cuestiones relacionadas