在 Ant 脚本中复制文件时删除最后一个目录



如何将文件复制到更上一级的目录?

我已经看过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/中的子文件夹(例如cssjsimg等),这不起作用。

经过进一步调查,这个正则表达式映射器似乎完成了这项工作:

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

相关内容

  • 没有找到相关文章

最新更新