Pregunta

Tengo un script de compilación y, como parte de ese script, copia un archivo jar en un directorio; para facilitarlo, llamémoslo jar de utilidades.el jar de utilidades se construye mediante otro script de compilación que se encuentra en otro directorio.Lo que estoy tratando de hacer es que mi script de compilación ejecute el script de compilación de utilidades para poder asegurarme de que el archivo jar de utilidades esté actualizado.

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

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

Lo cual no funciona porque la tarea de importación, a diferencia de casi todas las demás tareas de hormigas, no se ejecuta desde basedir, sino desde pwd.Entonces, para evitarlo, tengo esta pequeña canción, que importa con éxito el archivo de compilación.

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

Ahora que he resuelto mi problema de importación, necesito llamar a la tarea, bueno, eso debería ser fácil, ¿verdad?

<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 encuentro 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 necesito esto es que en mi archivo de compilación de utilidades, el paso para seleccionar qué código copiar al jar se basa en rutas relativas para evitar codificar rutas en mi archivo ant.¿Algunas ideas?

¿Fue útil?

Solución

Tengo algo similar configurado:Tengo un Ant build.xml principal que llama a un build.xml separado que se encarga de crear 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 consiste en utilizar subant en lugar de antcall.No es necesario importar el otro archivo de compilación.

Otros consejos

Intenta usar el tarea "hormiga" en lugar de la tarea "antcall", que ejecuta la compilación importada directamente en lugar de importarla al archivo de compilación actual.Tiene un parámetro "dir":

El directorio se utilizará como un basado para el nuevo proyecto de hormiga.El valor predeterminado a la base del proyecto actual, a menos que HereTall se haya establecido en falso, en cuyo caso no tiene un valor predeterminado.Esto anulará la configuración a base del proyecto llamado.

Entonces podrías hacer:

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

o algo así.

Puede pasar parámetros a antcall usando anidados en el bloque antcall.Por lo tanto, puede transmitir las propiedades de esa manera (probablemente incluso en base a que las propiedades son inmutables).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top