我正在使用第三方构建脚本使用名为“someFile.js”的缩小文件和名为“someFile.js.uncompressed.js”的未缩小版本创建缩小的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
有没有办法用蚂蚁来实现这个目标?我正在使用ant 1.8.1。
提前感谢您的帮助!
答案 0 :(得分:3)
您可以使用Ant <present>
selector来执行此操作。例如:
<copy todir="dest">
<fileset dir="src">
<present targetdir="src">
<mapper type="glob" from="*" to="*.uncompressed.js" />
</present>
</fileset>
</copy>
在这种情况下,选择器中的targetdir
与文件集的根目录相同。
这样做是复制src
目录树中的任何文件,其中附加了.uncompressed.js
的同名文件也会出现。
答案 1 :(得分:1)
您可以为文件集使用自定义scriptselector。
├── 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
<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>
注意: