【问题标题】:Ant concat task complain on missing filesAnt concat 任务抱怨丢失文件
【发布时间】:2011-01-06 06:09:37
【问题描述】:
<concat destfile="dist/external.js">
  <fileset dir=".">
    <include name="a.js" />
    <include name="b.js" />
  </fileset>
</concat>

如果缺少 a 或 b,这不会失败。我尝试设置 optional="false" 或 asis="true" ,但它总是抱怨这些属性不存在。

【问题讨论】:

    标签: ant concatenation


    【解决方案1】:

    如果您只想在文件丢失时看到来自“concat”任务的警告,可以使用filelistresource collection 代替“文件集”:

    <concat destfile="dist/external.js">
      <filelist dir=".">
        <file name="a.js" />
        <file name="b.js" />
      </filelist>
    </concat>
    

    b.js不存在时,会给出消息:

    [concat] /Path/.../b.js does not exist.
    

    但无论如何都会继续,这可能不是你想要的。

    检查资源集合中是否存在所有文件的一种方法如下。请注意,您需要将“antlib:org.apache.tools.ant.types.resources.selectors”命名空间添加到项目中才能使用如下所示的resource selectors。 (这不适用于 1.7.0 之前的 Ant 版本。)使用 Ant fail task 检查是否有资源丢失。

    <project name="stack_overflow"
             xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
    
    <filelist id="my.js.files" dir=".">
        <file name="a.js" />
        <file name="b.js" />
    </filelist>
    
    <restrict id="missing.js.files">
      <filelist refid="my.js.files"/>
      <rsel:not>
        <rsel:exists/>
      </rsel:not>
    </restrict>
    
    <property name="missing.files" refid="missing.js.files" />
    <fail message="These files are missing: ${missing.files}">
      <condition>
        <length string="${missing.files}" when="greater" length="0" />
      </condition>
    </fail>
    <concat destfile="dist/external.js">
        <filelist refid="my.js.files" />
    </concat>
    
    </project>
    

    运行时,与之前使用b.jsmissing 一样,这会导致在“concat”任务之前的构建失败:

    BUILD FAILED
    /Path/.../build.xml:17: These files are missing: /Path/.../b.js
    

    【讨论】:

    • 很抱歉,我花了这么长时间才确定这个是正确的,我自己找到了这个,完全忘记了这个问题!似乎文件集和文件列表是非常不同的东西,我相信文件集表现更好,因为它只是以任何顺序命中文件,无论它们是否存在。 Filelist 查找每个文件,如果不存在则失败。
    猜你喜欢
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多