2008-08-26 18 views
7

Cada vez que creo un proyecto nuevo copio el archivo ant del último proyecto al nuevo y hago los cambios apropiados (intentando al mismo tiempo hacerlo más flexible para el próximo proyecto). Pero como realmente no pensé al principio, el archivo comenzó a verse muy feo.Mejor plantilla Apache Ant

¿Tiene una plantilla Ant que pueda ser portada fácilmente en un nuevo proyecto? ¿Alguna sugerencia/sitio para hacer una?

Gracias.

Respuesta

9

Una alternativa para hacer una plantilla es evolucionar una al generalizar gradualmente la secuencia de comandos Ant de su proyecto actual para que haya menos cambios que hacer la próxima vez que la copie para utilizarla en un proyecto nuevo. Hay varias cosas que puedes hacer.

Use $ {ant.project.name} en los nombres de los archivos, por lo que solo debe mencionar el nombre de la aplicación en el elemento del proyecto. Por ejemplo, si genera myapp.jar:

<project name="myapp"> 
    ... 
    <target name="jar"> 
     ... 
     <jar jarfile="${ant.project.name}.jar" ... 

Estructura de la estructura de directorio de origen para que pueda empaquetar su acumulación mediante la copia de directorios completos, en lugar de nombrar los archivos individuales. Por ejemplo, si va a copiar los archivos JAR a un archivo de aplicación web, hacer algo como:

<copy todir="${war}/WEB-INF/lib" flatten="true"> 
    <fileset dir="lib" includes="**/*.jar"> 
</copy> 

Use archivos de propiedades para las propiedades de los archivos de creación específicas de la máquina y específicos del proyecto.

<!-- Machine-specific property over-rides --> 
<property file="/etc/ant/build.properties" /> 

<!-- Project-specific property over-rides --> 
<property file="build.properties" /> 

<!-- Default property values, used if not specified in properties files --> 
<property name="jboss.home" value="/usr/share/jboss" /> 
... 

Tenga en cuenta que las propiedades de Ant no se pueden cambiar una vez establecido, por lo que se anula un valor mediante la definición de un nuevo valor antes el valor predeterminado.

0

Solía ​​hacer exactamente lo mismo ... luego cambié a maven. Maven depende de un archivo xml simple para configurar su compilación y un repositorio simple para administrar las dependencias de su compilación (en lugar de verificar estas dependencias en su sistema de control de origen con su código).

Una característica que realmente me gusta es lo fácil que es la versión de sus jarras, manteniendo fácilmente las versiones anteriores disponibles para los usuarios heredados de su biblioteca. Esto también funciona para su beneficio cuando desea actualizar una biblioteca que usa, como junit. Estas dependencias se almacenan como archivos separados (con su información de versión) en su repositorio de maven, por lo que las versiones antiguas de su código siempre tienen sus dependencias específicas disponibles.

Es una hormiga mejor.

+3

Maven puede ser mejor que la hormiga, pero esto no responde la pregunta. No siempre existe el lujo de poder cambiar a maven. –

+1

Y desde mi experiencia, no siempre es un lujo :( –

0

Solía ​​hacer exactamente lo mismo .... luego cambié a maven.

Oh, es Maven 2. Temía que alguien siguiera usando seriamente Maven hoy en día. Dejando a un lado las bromas: si decide cambiarse a Maven 2, debe tener cuidado al buscar información, porque Maven 2 es una completa reimplementación de Maven, con algunas decisiones de diseño fundamentales modificadas. Desafortunadamente, no cambiaron el nombre, lo que ha sido una gran fuente de confusión en el pasado (y todavía lo es a veces, dada la naturaleza "de memoria" de la web).

Otra cosa que puede hacer si desea permanecer en el espíritu Ant es utilizar Ivy para administrar sus dependencias.

1

Si está trabajando en varios proyectos con estructuras de directorios similares y desea seguir con Ant en lugar de ir a Maven, utilice Import task. Le permite tener los archivos de compilación del proyecto solo importar la plantilla y definir cualquier variable (classpath, dependencias, ...) y tener todo el verdadero script de compilación desactivado en la plantilla importada. Incluso permite la anulación de las tareas en la plantilla, lo que le permite colocar ganchos de destino previos o posteriores al proyecto específicos.

+0

Sí, eso es principalmente lo que estoy pensando ... ¿Se puede publicar la plantilla que se importará con toda la secuencia de comandos de construcción real, por favor? – pek

0

Una cosa a tener en cuenta: si está utilizando Eclipse, consulte las tareas de ant4eclipse. Utilizo un solo script de compilación que solicita los detalles configurados en eclipse (directorios de origen, ruta de compilación que incluye proyectos de dependencia, orden de compilación, etc.).

Esto le permite administrar dependencias en un lugar (eclipse) y aún así poder usar una compilación de línea de comandos para la automatización.

1

Tuve el mismo problema y generalicé mis plantillas y las crecí en su propio proyecto: Antiplate. Tal vez también sea útil para ti.

6

Puedes probar http://import-ant.sourceforge.net/. Es un conjunto de fragmentos de archivos de compilación que se pueden usar para crear archivos de compilación personalizados simples.

+0

Aparte de la respuesta aceptada, esta respuesta es lo más cercano a _actualmente_ al intentar responder la pregunta. No solo viene con soluciones alternativas "mejores". – Steen

Cuestiones relacionadas