Ant <import> contre <include> tâches

Je vois maintenant Ant a à la fois un <include> tâche et un <import> tâche.

Selon les descriptions:

Inclure

Inclure un autre fichier de build dans le projet actuel.

et

Importation

Les importations d'un autre fichier de build dans le projet actuel.

Alors, pourquoi utiliser l'un plutôt que l'autre?

Voici mon problème:

Dans notre système de construction, nous sommes à la concaténation d'un tas de scripts Javascript et ensuite de les minimiser. Les JavaScripts sont situés dans une douzaine de différents répertoires, et nous prenons des lots de chaque répertoire et concaténation de leur en cinq ou six super minimisé les JavaScripts. Certains de ces fichiers sont copiés dans plusieurs super JavaScripts.

Afin de faciliter le débogage plus facile, et de construire un peu plus flexible, je veux copier tous les fichiers dans le target/work/resources2 répertoire avec chaque sous-répertoire, il représente un super réduite JavaScript. À des fins de débogage, nous allons inclure la non-réduite super JavaScript et les originaux. Le script de construction n'est pas complexe, mais l'ensemble de la section est de prendre un grand nombre de lignes. Je pensais mettre le <copy> des choses dans un fichier XML distinct, de sorte que le tout ressemble à ceci:

<target name="process-resources"
     description="Concatenate and minimize the JavaScripts (using Maven lifecycle names for our targets">
     <!-- The following include the copying stuff -->
     <here.be.dragons file="${basedir}/reservations.xml"/>
     <here.be.dragons file="${basedir}/date.xml"/>
     <here.be.dragons file="${basedir}/select.xml"/>

     <for param="concat.dir">
         <fileset dir="${work.dir]/resources2"/>
         <sequential>
            <here.I.am.concatenating.and.minimizing/>
         </sequential>
    </for>
</target>

Je vois il y a quatre possibilités:

  • Utilisation <ant/> pour appeler les fichiers qui ne la copie
  • Utilisation <import/> (qui ne fonctionne pas, car il pourrait ne pas être en mesure d'être inclus à l'intérieur d'une cible)
  • Utilisation <include/> (qui ne fonctionne pas, car il pourrait ne pas être en mesure d'être inclus à l'intérieur d'une cible)
  • Utiliser le Entité Comprennent.

Je ne suis pas fou au sujet de l'aide <ant/> ou <antcall> bien que ce pourrait être un bon moment pour ce faire. L'Entité Comprennent idée va fonctionner, mais c'est quelque chose que la plupart des gens ne comprennent pas, et j'ai peur qu'il causer de la confusion pour les personnes qui ont à l'appui de ce que je fais. Le <import> et <include> peut ne pas être en mesure d'être utilisé dans cette situation, mais je suis toujours curieux de savoir quelles sont les différences.

  • Même si elle n'est pas directement lié à la question, je pense qu'il est judicieux de noter que la <for> dans l'exemple n'est pas standard ant, mais une tâche à partir de la ant-contrib paquet.
InformationsquelleAutor David W. | 2013-01-07