Теперь я вижу, что Ant имеет как задачу <include>
, так и задачу <import>
.
В соответствии с описаниями:
Включить
Включить другой файл сборки в текущий проект.
и
Импорт
Импортирует другой файл сборки в текущий проект.
Итак, зачем использовать один над другим?
Вот моя настоящая проблема:
В нашей текущей системе сборки мы объединяем кучу JavaScripts и минимизируем их. JavaScripts расположены в десятках разных каталогов, и мы берем партии из каждой директории и объединяем их в пять или шесть суперминизированных JavaScripts. Некоторые из этих файлов копируются в несколько супер-скриптов Java.
Чтобы сделать отладку проще, а сборка немного более гибкой, я хочу скопировать все файлы в каталог target/work/resources2
с каждым подкаталогом, находящимся там, где представлен другой суперминимизированный JavaScript. Для целей отладки мы будем включать в себя не минимизированный супер JavaScript и оригиналы. Строка script не сложна, но весь раздел занимает много строк. Я думал о том, чтобы поместить материал <copy>
в отдельный XML файл, поэтому все это выглядит так:
<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>
Я вижу, что есть четыре возможности:
- Используйте
<ant/>
для вызова файлов, выполняющих копирование - Используйте
<import/>
(который может не работать, потому что он не может быть включен в цель) - Используйте
<include/>
(который может не работать, потому что он не может быть включен в цель) - Используйте Entity Include.
Я никогда не сумасшедший об использовании <ant/>
или <antcall>
, хотя это может быть подходящее время для этого. Идея Entity Include будет работать, но что-то большинство людей не понимает, и я боюсь, что это вызовет путаницу для людей, которые должны поддержать то, что я делаю. <import>
и <include>
, возможно, не смогут использоваться в этой ситуации, но мне все еще интересно, что это за различия.