Meilleure façon d'avoir de vraies & # 8220; tâches de fichier & # 8221; dans ANT

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

  •  06-07-2019
  •  | 
  •  

Question

J'apprends encore à bien utiliser ANT et je voulais savoir s'il existe un moyen raisonnable de faire des tâches de fichiers, comme Rake and Make:

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

"Avec un fichier, vous faites référence à des fichiers réels plutôt qu’à des noms de tâches. Donc, «build / dev / rake.html» et «dev / rake.xml» sont des fichiers réels. Le fichier html est la sortie de cette tâche et le fichier xml est l'entrée. Vous pouvez penser à une tâche de fichier comme indiquant au système de compilation comment créer le fichier de sortie - c’est exactement ce qu’il faut faire dans make - vous dressez la liste des fichiers de sortie souhaités et indiquez à make comment les créer.

Une partie importante de la tâche de fichier est qu'elle ne peut être exécutée que si vous devez l'exécuter. Le système de construction examine les fichiers et n'exécute la tâche que si le fichier de sortie n'existe pas ou si sa date de modification est antérieure au fichier d'entrée. Les tâches de fichiers fonctionnent donc très bien lorsque vous envisagez des tâches fichier par fichier. "

En d'autres termes, supposons que je souhaite exécuter un fichier binaire personnalisé et que ce fichier ne soit exécuté que si l'un des fichiers a été modifié. Ceci est lié à ceci question, mais je ne veux pas du tout exécuter le binaire, pas seulement passer une partie du jeu de fichiers (c'est-à-dire qu'il n'y en a qu'un dans le jeu de fichiers et que je ne veux pas du tout que l'outil s'exécute).

La solution idéale ne serait pas non plus une mince affaire, mais pourrait plutôt être facilement appliquée à n'importe quelle cible - peut-être en utilisant du JavaScript ANT ou une tâche personnalisée?

Était-ce utile?

La solution

Utilisez la tâche ant-contrib outofdate . Il a exactement les propriétés que vous demandez. Voici le site Web ant-contrib .

Voici un modèle pour l’intégrer à votre build:

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top