如何将文件复制到一级目录?
我查看了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
等),这不起作用。)
答案 0 :(得分:0)
经过进一步调查后,这个regexpmapper似乎完成了这项工作:
<regexpmapper from="^([^\/]+)/[^\/]+/(.*)$$" to="\1/\2" handledirsep="true" />
答案 1 :(得分:0)
scriptmapper怎么样?
├── build.xml
├── src
│ └── foo
│ └── bar
│ ├── 1.0
│ │ └── B.txt
│ └── A.txt
└── target
└── foo
├── A.txt
└── bar
└── B.txt
<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>