maven-2 ant

maven 2 - ¿Cómo envolver una construcción Ant con Maven?



maven-2 (4)

Usamos Maven para nuestro producto grande. Todos nuestros artefactos se implementan en un repositorio archiva compartido utilizando el objetivo de despliegue de Maven. Ahora estoy integrando un producto de terceros que tiene una construcción ant. Sé cómo llamar a los objetivos antis de maven usando el plugin antrun, pero no estoy seguro de cómo configurar el pom en esta instancia. No quiero que maven genere realmente un artefacto, pero sí quiero que extraiga el artefacto que fue construido por ant cuando se ejecuta el objetivo de despliegue de maven.

Estoy planeando tener el pom adyacente a build.xml. El pom usará el plugin antrun en el objetivo del paquete para llamar al objetivo ant en el momento apropiado para construir el artefacto .war.

Preguntas:

a) Estoy creando un archivo .war pero se crea a través de una hormiga, no de Maven, por lo que tener un tipo de embalaje de guerra en el pom no tiene sentido. ¿Cuál debería ser mi tipo de empaque?

b) ¿Cómo hago que Maven extraiga el artefacto de mi directorio de salida de hormigas para el objetivo de despliegue?

c) Si no hay buenas respuestas para A y B, ¿hay tareas ant que reproduzcan la funcionalidad de despliegue de maven para obtener mi artefacto .war en el repositorio compartido?


Puedes envolver un proyecto ANT con Maven usando varios objetivos de ejecución de hormigas, como escribí en otra pregunta. Suponiendo que su proyecto ant existente tiene tareas de limpieza y compilación, esta podría ser una forma útil de envolver el proyecto para que pueda usar los objetivos de maven y hacer que se asigne al código ant existente.



Puede usar maven-antrun-plugin para invocar la compilación de ant. Luego use el build-helper-maven-plugin para adjuntar el jar producido por el proyecto. El artefacto adjunto se instalará / desplegará junto al pomo.
Si especifica su proyecto con packaging pom , Maven no entrará en conflicto con la construcción de ant.

En el ejemplo siguiente, se supone que ant build.xml está en src / main / ant, tiene un objetivo de compile y lo ant-output.jar a ant-output.jar .

<plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>process-resources</phase> <configuration> <tasks> <ant antfile="src/main/ant/build.xml" target="compile"/> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.3</version> <executions> <execution> <id>add-jar</id> <phase>package</phase> <goals> <goal>attach-artifact</goal> </goals> <configuration> <artifacts> <artifact> <file>${project.build.directory}/ant-output.jar</file> <type>jar</type> </artifact> </artifacts> </configuration> </execution> </executions> </plugin>


<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <id>install-library</id> <phase>install</phase> <goals> <goal>install-file</goal> </goals> <configuration> <groupId>x.x</groupId> <artifactId>ant-out-atifacts</artifactId> <version>${project.version}</version> <file>ant-output.jar</file> <packaging>zip</packaging> </configuration> </execution> </executions> </plugin>