Dav*_* W. 25 ant import include
我现在看到Ant既有<include>任务也有<import>任务.
根据描述:
包括
将另一个构建文件包含到当前项目中.
和
进口
将另一个构建文件导入当前项目.
那么,为什么要使用一个呢?
这是我的实际问题:
在我们当前的构建系统中,我们连接了一堆JavaScripts,然后将它们最小化.JavaScripts位于十几个不同的目录中,我们从每个目录中获取批处理,并将它们连接成五个或六个超级最小化的JavaScripts.其中一些文件被复制到多个超级JavaScripts中.
为了使调试更容易,并且构建更灵活,我想将所有文件复制到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>
Run Code Online (Sandbox Code Playgroud)
我看到有四种可能性:
<ant/>调用该做复印的文件<import/>(可能无效,因为它可能无法包含在目标中)<include/>(可能无效,因为它可能无法包含在目标中)我从不为使用而疯狂,<ant/>或者<antcall>虽然这可能是一个很好的时机.实体包含的想法是可行的,但这是大多数人不理解的东西,我担心它会给那些必须支持我正在做的事情的人造成混乱.该<import>和<include>可能无法在这种情况下使用,但我还是好奇的区别是什么.
Dan*_*lan 33
简短版本:如果要覆盖目标,请使用import,否则使用include.
使用导入时,导入的目标最多可以使用两个名称.它们的"普通"名称没有任何前缀,可能带有前缀名称(as属性的值或导入项目的name属性,如果有的话).
使用时,包含的目标仅以前缀形式提供.
使用导入时,导入的目标的depends属性保持不变,即它使用"普通"名称,并允许您覆盖依赖项列表中的目标.
使用include时,无法覆盖包含的目标,并重写其depends属性,以便使用带前缀的名称.这允许包含文件的编写者控制作为依赖项的一部分调用哪个目标.
通过使用不同的前缀可以多次包含同一个文件,不可能多次导入同一个文件.
| 归档时间: |
|
| 查看次数: |
14401 次 |
| 最近记录: |