maven - Como generar un tarro para el proyecto padre padre.
parent pom.xml (1)
Maven requiere un proyecto padre para tener
<packaging>pom</packaging>
Cláusula en el pom.xml del padre. Cuando se instala un proyecto de este tipo, solo se genera un archivo pom en el repositorio Maven. El archivo jar no se genera, no importa si el proyecto principal tiene algún código Java. Eso me obliga a tener proyectos parentales extra vacíos, lo que es una exageración. Lógicamente, algunas de mis bibliotecas podrían ser padres al mismo tiempo.
¿Hay una manera de generar archivos pom y jar para un proyecto principal sin eliminar / agregar la cláusula de packaging
entre instalaciones?
Usa el Plugin Maven Jar y el Maven Build Helper. Ejemplo POM:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>test-${project.version}</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Maven resultados de construcción:
mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building test 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) @ test ---
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default) @ test ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO]
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ test ---
[INFO] Installing /home/username/projects/test/pom.xml to /home/username/.m2/repository/test/test/1.0/test-1.0.pom
[INFO] Installing /home/username/projects/test/test-1.0 to /home/username/.m2/repository/test/test/1.0/test-1.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.805s
[INFO] Finished at: Thu Sep 06 13:33:20 EDT 2012
[INFO] Final Memory: 4M/119M
[INFO] ------------------------------------------------------------------------
Una nota sobre las prácticas de Maven:
Los módulos principales suelen ser donde se definen las dependencias y los complementos utilizados en común por todos los módulos secundarios. Rara vez tiene salida propia. Probablemente desee tener un submódulo de "distribución" que agregue todos los demás artefactos de su módulo, en lugar de intentar hacerlo en el módulo principal.