En la compa帽铆a donde trabajo (siguenos en twitter @itbrain) usamos como estandar Maven para todos nuestros proyectos ya que hacemos integraci贸n continua, ejecutamos pruebas unitarias y obtenemos reportes del avance del proyecto con ayuda de Maven. Sin embargo, hemos tenido clientes a los cuales tenemos que entregarles los proyectos con scripts en ANT (debido a sus propios procesos) para que estos los puedan construir y empaquetar.
A pesar de que hemos recomendado el uso de Maven a nuestros clientes no es posible cambiar los procesos de estos de la noche a la ma帽ana.
Afortunadamente para nosotros existe el plugin de Ant para Maven (http://maven.apache.org/plugins/maven-ant-plugin/index.html) el cual tiene los fabulosos comandos:
- ant:ant - Para generar los archivos build de Ant.
- ant:clean - Para limpiar los archivos build de Ant.
los cuales usaremos en este post para hacer el peque帽o ejercicio de convertir el proyecto con Maven a scripts de ANT.
Comenzamos creando un proyecto simple en maven:
mvn archetype:create -DgroupId=com.jabaddon.practices.maven -DartifactId=maven2ant
Terminada la ejecuci贸n de la creaci贸n del proyecto agregaremos unas cuantas dependencias al pom.xml para hacer nuestra prueba:
org.springframework
spring
2.5.6
log4j
log4j
1.2.15
Ok, el siguiente paso entonces es ejecutar el comando para crear los scripts de ANT:
mvn ant:ant
Al terminar la ejecuci贸n del comando tendremos 3 nuevos archivos en el proyecto:
build.xml
maven-build.properties
maven-build.xml
El archivo build.xml b谩sicamente solo importa al archivo maven-build.xml:
El archivo maven-build.xml es el que tiene los "target" de ant que tambi茅n tenemos en Maven y son:
Y por ultimo el archivo maven-build.propeties tiene definidas propiedades que indican cosas como: la ruta del c贸digo principal, la ruta del c贸digo de pruebas, la ruta hacia las librer铆as, etc.
project.build.outputDirectory=${maven.build.outputDir}
project.build.directory=${maven.build.dir}
maven.test.reports=${maven.build.dir}/test-reports
maven.build.finalName=maven2ant-1.0-SNAPSHOT
maven.reporting.outputDirectory=${maven.build.dir}/site
maven.build.testResourceDir.0=src/test/resources
maven.build.outputDir=${maven.build.dir}/classes
maven.build.resourceDir.0=src/main/resources
maven.build.testOutputDir=${maven.build.dir}/test-classes
maven.repo.local=${user.home}/.m2/repository
maven.settings.offline=false
maven.build.dir=target
maven.settings.interactiveMode=true
maven.build.testDir.0=src/test/java
maven.build.srcDir.0=src/main/java
Y si tuvi茅semos la necesidad de agregar mas "target" en la misma pagina del plugin de Ant recomiendan que se agreguen al archivo build.xml y no al maven-build.xml.