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

发布于 2024-10-17 08:00:00 字数 714 浏览 5 评论 0原文

我希望从 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" />
    </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>

I wish to exclude particular files from a nant (0.91) target and process the remainder.
Here's the code snippet, which shows I want to include all .js files but exclude foo.
foo is not being excluded. I've tried putting the exclude before the include but same result.

<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" />
    </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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等风来 2024-10-24 08:00:00

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

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

为:

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

You have specified the in attribute on foreach which is overriding the items element. Try changing:

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

to:

<foreach item="File" property="filename">
甩你一脸翔 2024-10-24 08:00:00

这似乎有效:

<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>

This seems to work:

<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>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文