Nant foreach包括排除过滤器未按预期工作

时间:2011-02-15 22:29:14

标签: nant

我希望从nant(0.91)目标中排除特定文件并处理余数 这是代码片段,显示我想要包含所有.js文件,但不包括foo。 foo不被排除在外。我已经尝试在排除前加上排除但结果相同。

<foreach item="File" in="${built.web.directory}\Content\js" property="filename">
    <in>
        <items basedir="${built.web.directory}\Content\js">
            <include name="/**/*.js" />
            <exclude name="**/foo.1.2.js" />
            <exclude name="foo.1.2.js" />
        </items>
    </in>
    <do>
        <echo message="Compressing ${filename}" />
        <exec program="${packer.exe}" commandline="-o ${built.web.directory}\Content\js\${path::get-file-name(filename)} -m jsmin ${filename}" />
    </do>
</foreach>

2 个答案:

答案 0 :(得分:7)

您已在 foreach 上指定 in 属性,该属性将覆盖 items 元素。尝试更改:

<foreach item="File" in="${built.web.directory}\Content\js" property="filename">

为:

<foreach item="File" property="filename">

答案 1 :(得分:1)

这似乎有效

<fileset id="javascript.files" basedir="${built.web.directory}\Content\js">
    <include name="/**/*.js" />
    <exclude name="**/foo.1.2.js" />
    <exclude name="**/*.min.js" />
</fileset>


<foreach item="File" property="filename">
    <in>
       <items refid="javascript.files" />
    </in>
    <do>
        <echo message="Compressing ${filename}" />
        <exec program="${packer.exe}" commandline="-o ${built.web.directory}\Content\js\${path::get-file-name(filename)} -m jsmin ${filename}" />
    </do>
</foreach>