tutorial script ant build-process

script - build.xml ant



Scripts de compilaciĆ³n Ant, antcall, dependencias, etc. (3)

Puede pasar params a antcall utilizando anidado en el bloque anticada. Por lo tanto, puede pasar las propiedades de esa manera (probablemente incluso basadas en que las propiedades son inmutables).

Tengo un script de compilación y como parte de ese script, copia un archivo jar en un directorio, por lo que permite llamarlo jar de utils. el jar de utils está creado por otro script de construcción que se encuentra en otro directorio. Lo que intento hacer es que mi script de compilación ejecute el script de compilación de utils para que pueda garantizar que el jar utils esté actualizado.

Entonces sé que necesito importar el archivo de compilación de utils.

<import file="../utils/build/build.xml" />

Lo cual no funciona porque la tarea de importación, a diferencia de casi todas las tomas de ant, no se ejecuta desde basedir, se ejecuta desde el pwd. Así que para evitarlo tengo esta pequeña canción, que importa con éxito el archivo de construcción

<property name="baseDirUpOne" location=".." /> <import file="${baseDirUpOne}/utils/build/build.xml" />

Entonces, ahora que he resuelto mi problema de importación, necesito llamar a la tarea, bueno, eso debería ser fácil:

<antcall target="utils.package" />

tenga en cuenta que en lo anterior, utils es el nombre del proyecto de ../utils/build/build.xml

El problema con el que me estoy cruzando ahora es que la llamada ant no se ejecuta en .../utils/build, así que lo que necesito, y no puedo encontrar, es una propiedad runat o algo similar, esencialmente:

<antcall target="utils.package" runat="../utils/build" />

La razón por la que lo necesito es que en mi archivo de creación utils, el paso para seleccionar qué código copiar en el jar se basa en rutas relativas para evitar las rutas de acceso directo en mi archivo ant. ¿Algunas ideas?


Intente utilizar la tarea "ant" en lugar de la tarea "anticaer", que ejecuta directamente la compilación importada en lugar de importarla en el archivo de compilación actual. Tiene un parámetro "dir":

el directorio para usar como una base para el nuevo proyecto Ant. Se establece de forma predeterminada en la baseir del proyecto actual, a menos que inheritall se haya establecido en falso, en cuyo caso no tiene un valor predeterminado. Esto anulará la configuración basada en el proyecto llamado.

Entonces podrías hacer:

<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" />

o algo así.


Tengo una configuración similar: tengo Ant build.xml principal que llama a un build.xml separado que se encarga de construir mis pruebas. Así es como lo hago:

<target name="build-tests"> <subant target="build"> <fileset dir="${test.home}" includes="build.xml"/> </subant> </target>

El truco es usar subant lugar de antcall . No tiene que importar el otro archivo de compilación.