Actualmente estoy luchando con Maven: tengo un proyecto complejo hecho de varios módulos anidados y para algunos de esos módulos, tengo configuraciones similares en los POM.Cómo compartir fragmentos POM entre diferentes POM
Me gustaría hacerlo limpio. En realidad, me gustaría definir una configuración común de "jar ejecutable" y activarla en algunos módulos.
Aquí es el fragmento POM me gustaría compartir entre varios proyectos:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- Use a custom descriptor, with suffix "bin" -->
<descriptors>
<descriptor>src/main/assembly/runnable-jar-assembly.xml</descriptor>
</descriptors>
<!-- Add main class to manifest -->
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
</configuration>
<!-- Add build of this package to lifecycle -->
<executions>
<execution>
<id>make-runnable-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
En algunos de los POMS, me gustaría ser capaz de hacer algo como:
<!-- Set the main class -->
<properties>
<mainClass>my.main.Class</mainClass>
</properties>
<!-- Activate runnable jar build -->
<import>src/main/pom/runnable-jar-pom.xml</import>
I he buscado un medio para importar algunos fragmentos XML en un POM, o para definir una macro entera de conjunto de nodos XML.
Por lo que he encontrado, la solución más cercana sería definir un perfil en el POM padre y activarlo en algunos módulos secundarios probando la presencia de un archivo. See this related question. Pero me enfrento al problema de que la propiedad {basedir}
no está configurada correctamente heredada/establecida.
Me resulta muy sorprendente necesitar un truco para hacer algo tan básico (= habitual). ¿Cómo manejas esto en Maven?
Agradable. No estaba al tanto de esa posibilidad. –