2

我正在使用第三方构建脚本创建缩小的 js 文件,其中包含名为“someFile.js”的缩小文件和一个名为“someFile.js.uncompressed.js”的未缩小版本。我需要在 build.xml 中的一项任务仅将具有合作伙伴“.uncompressed.js”文件的 js 文件复制到另一个位置。例如,给定这样的目录结构:

- rootDirectory
  - minified.js
  - minified.js.uncompressed
  - unminified.js
  - anotherDirectory
    - anotherMinified.js
    - anotherMinified.js.uncompressed.js
    - unminified.js
    - anotherUnminified.js

目标目录最终应该是这样的:

- rootDirectory
  - minified.js
  - anotherDirectory
    - anotherMinified.js

有没有办法用蚂蚁做到这一点?我正在使用蚂蚁 1.8.1。

提前感谢您的帮助!

4

2 回答 2

3

您可以使用 Ant<present>选择器来执行此操作。例如:

<copy todir="dest">
    <fileset dir="src">
        <present targetdir="src">
            <mapper type="glob" from="*" to="*.uncompressed.js" />
        </present>
    </fileset>
</copy>

在这种情况下targetdir,选择器中的 与文件集的根目录相同。

这样做是复制src目录树中的任何文件,其中存在同名文件,.uncompressed.js附加文件也存在。

于 2013-11-07T08:42:50.243 回答
1

您可以为您的文件集使用自定义脚本选择器。

例子

├── build.xml
├── src
│   └── rootDirectory
│       ├── anotherDirectory
│       │   ├── anotherMinified.js
│       │   ├── anotherMinified.js.uncompressed
│       │   ├── anotherUnminified.js
│       │   └── unminified.js
│       ├── minified.js
│       ├── minified.js.uncompressed
│       └── unminified.js
└── target
    └── rootDirectory
        ├── anotherDirectory
        │   └── anotherMinified.js
        └── minified.js

构建.xml

<project name="demo" default="copy-files">

   <target name="copy-files">
      <copy todir="target">
         <fileset dir="src">
            <scriptselector language="javascript">
               importClass(java.io.File);
               var testForFile = new File("src/" + filename + ".uncompressed");
               self.setSelected(testForFile.exists());
            </scriptselector>
         </fileset>
      </copy>
   </target>

   <target name="clean">
      <delete dir="target"/>
   </target>

</project>

笔记:

  • 这应该可以在不需要额外的罐子的情况下工作。现代 JVM 支持 Javascript。
于 2013-11-07T00:44:17.780 回答