我现在看到 Ant 既有<include>
任务又有<import>
任务。
根据描述:
包括
在当前项目中包含另一个构建文件。
和
进口
将另一个构建文件导入当前项目。
那么,为什么要使用另一种呢?
这是我的实际问题:
在我们当前的构建系统中,我们连接了一堆 JavaScript,然后将它们最小化。JavaScript 位于十几个不同的目录中,我们从每个目录中获取批次并将它们连接成五到六个超级最小化的 JavaScript。其中一些文件被复制到多个超级 JavaScript 中。
为了使调试更容易,并且构建更灵活,我想将所有文件复制到target/work/resources2
目录中,其中每个子目录代表不同的超级最小化 JavaScript。出于调试目的,我们将包括非最小化的超级 JavaScript 和原件。构建脚本并不复杂,但整个部分占用了很多行。我想把这些<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/>
(这可能不起作用,因为它可能无法包含在目标中) - 使用实体包括。
我从不疯狂使用<ant/>
,或者<antcall>
尽管这可能是这样做的好时机。实体包含的想法会起作用,但这是大多数人不理解的,我担心它会给那些必须支持我正在做的事情的人带来困惑。<import>
和<include>
可能无法在这种情况下使用,但我仍然很好奇有什么区别。