蚂蚁<import>与 <include> 任务



我现在看到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/>(这可能不工作,因为它可能无法包含在目标中)
  • 使用实体Include

我从来没有疯狂使用<ant/><antcall>,虽然这可能是一个很好的时间去做这件事。实体包含的想法会起作用,但这是大多数人不理解的东西,我担心这会给那些必须支持我所做的事情的人带来困惑。<import><include>可能无法在这种情况下使用,但我仍然很好奇它们的区别是什么。

import的文档解释了两者的区别:

import和include有什么不同?

简短的版本:如果你想覆盖一个目标,使用import,否则使用include。

当使用import时,导入的目标最多可以有两个名称。他们的"正常";没有任何前缀的名称,也可能带有前缀名称(as属性的值或导入的项目的Name属性,如果有的话)。

当使用include时,被包含的目标只能以带前缀的形式出现。

当使用import时,被导入目标的depends属性保持不变,即它使用"normal"命名并允许你覆盖依赖列表中的目标。

当使用include时,被包含的目标不能被覆盖,并且它们的依赖属性被重写,以便使用前缀名称。这允许包含文件的编写者控制哪个目标作为依赖项的一部分被调用。

可以使用不同的前缀包含同一个文件多次,但不可以多次导入同一个文件。

相关内容

  • 没有找到相关文章

最新更新