蚂蚁 与 任务(Ant vs. tasks)

2019-08-05 23:22发布

我现在看到蚂蚁同时具有<include>任务和<import>任务。

据描述:

包括

包含另一个构建文件到当前项目。

进口

导入另一个构建文件到当前项目。

那么,为什么要使用一个比其他?

这里是我实际的问题:

在我国目前的构建系统,我们串接一串的JavaScript,然后尽量减少他们。 该Java脚本位于十几个不同的目录,我们从每个目录中取批次,并将它们串联成五周六个超级最小化的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>可能无法在这种情况下使用,但我还是好奇的区别是什么。

Answer 1:

The documentation of import explains the difference:

How is import different from include?

The short version: Use import if you intend to override a target, otherwise use include.

When using import the imported targets are available by up to two names. Their "normal" name without any prefix and potentially with a prefixed name (the value of the as attribute or the imported project's name attribute, if any).

When using include the included targets are only available in the prefixed form.

When using import, the imported target's depends attribute remains unchanged, i.e. it uses "normal" names and allows you to override targets in the dependency list.

When using include, the included targets cannot be overridden and their depends attributes are rewritten so that prefixed names are used. This allows writers of the included file to control which target is invoked as part of the dependencies.

It is possible to include the same file more than once by using different prefixes, it is not possible to import the same file more than once.



文章来源: Ant vs. tasks