如何将文件复制到更上一级的目录?
我已经看过cutdirsmapper
但它剥离了前导目录,而我想剥离最后一个目录。从手册中的示例中,应将源文件名foo/bar/A.txt
复制到 foo/A.txt
。
这是我到目前为止所拥有的:
<copy todir="../vendor">
<fileset dir="${resources}" includes="Bootstrap/2.2.1/" />
<fileset dir="${resources}" includes="FontAwesome/4.2.0/" />
<fileset dir="${resources}" includes="jQuery/2.1.1/" />
</copy>
我最终得到了包含第三方库的文件夹,例如../vendor/Bootstrap/2.2.1/
,但我希望将${resources}/Bootstrap/2.2.1/
的内容复制到../vendor/Bootstrap/
中。
我尝试像这样使用regexpmapper
:
<regexpmapper from="^(.*)/([^/]+)/([^/]*)$$" to="1/3" handledirsep="true" />
由于Bootstrap/2.2.1/
中的子文件夹(例如css
、js
、img
等),这不起作用。
经过进一步调查,这个正则表达式映射器似乎完成了这项工作:
<regexpmapper from="^([^/]+)/[^/]+/(.*)$$" to="1/2" handledirsep="true" />
脚本映射器怎么样?
例
├── build.xml
├── src
│ └── foo
│ └── bar
│ ├── 1.0
│ │ └── B.txt
│ └── A.txt
└── target
└── foo
├── A.txt
└── bar
└── B.txt
构建.xml
<project name="demo" default="build">
<target name="build">
<copy todir="target" includeEmptyDirs="false">
<fileset dir="src"/>
<scriptmapper language="javascript">
importClass(java.io.File);
src = new File(source);
trg = new File(src.getParentFile().getParentFile(), src.getName());
self.addMappedName(trg);
</scriptmapper>
</copy>
</target>
</project>