La forma más fácil de tener un verdadero & # 8220; tareas de archivo & # 8221; en ANT

StackOverflow https://stackoverflow.com/questions/1622860

  •  06-07-2019
  •  | 
  •  

Pregunta

Todavía estoy aprendiendo a usar ANT bien, y quería entender si hay alguna forma razonable de hacer tareas de archivo, similar a Rake and Make:

http://martinfowler.com/articles/rake.html#FileTasks

" Con un archivo te estás refiriendo a archivos reales en lugar de nombres de tareas. Entonces 'build / dev / rake.html' y 'dev / rake.xml' son archivos reales. El archivo html es el resultado de esta tarea y el archivo xml es la entrada. Puede pensar en una tarea de archivo como decirle al sistema de compilación cómo hacer el archivo de salida; de hecho, esta es exactamente la noción en make: enumera los archivos de salida que desea y le dice a make cómo hacerlos.

Una parte importante de la tarea de archivo es que no se ejecuta a menos que necesite ejecutarla. El sistema de compilación analiza los archivos y solo ejecuta la tarea si el archivo de salida no existe o si la fecha de modificación es anterior al archivo de entrada. Por lo tanto, las tareas de archivo funcionan extremadamente bien cuando está pensando en las cosas archivo por archivo.

Entonces, en otras palabras, digamos que quiero ejecutar un binario personalizado y solo quiero que ese binario se ejecute si alguno de los archivos ha cambiado. Esto está relacionado con esto pregunta, pero no quiero ejecutar el binario en absoluto, no solo pasar una parte del conjunto de archivos (es decir, solo hay uno en el conjunto de archivos y no quiero que la herramienta se ejecute en absoluto).

La solución ideal tampoco sería muuuy larga, sino que podría aplicarse fácilmente a cualquier objetivo, ¿tal vez utilizando algún JavaScript ANT o una tarea personalizada?

¿Fue útil?

Solución

Utilice tarea anticuado anticontaminación . Tiene exactamente las propiedades que está solicitando. Aquí está sitio web ant-contrib .

Aquí hay una plantilla sobre cómo integrarlo en su compilación:

<taskdef
  resource="net/sf/antcontrib/antlib.xml"
>
  <classpath>
    <pathelement location="${ant-contrib.jar}"/>
</taskdef>

<outofdate>
 <sourcefiles path="dev/rake.xml"/>
 <targetfiles path="build/dev/rake.html"/>
 <sequential>
   ... do your work here ...
   ... will only run if rake.html is older than rake.xml ...
 </sequential>
</outofdate>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top