使用通配符复制

时间:2014-03-25 08:58:46

标签: linux ant copy exec

我正在尝试使用ant复制文件夹的内容,并且需要保留文件的权限。

我使用以下ant代码执行此操作:

<exec executable="cp">
    <arg line="-pr env/* ." />
</exec>

当我手动尝试该命令时,它可以工作,但是当我运行ant文件时,我收到以下错误:

deploy.add.op:
     [exec] cp: cannot access env/*
     [exec] Result: 2

BUILD SUCCESSFUL

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

Ant无法展开*通配符。您需要复制每个子文件夹:

<exec executable="cp">
    <arg line="-pr env/sub1 ." />
</exec>

<exec executable="cp">
    <arg line="-pr env/sub2 ." />
</exec>

.. 

如果效率不高,你可能会产生一个bash:

<exec executable="bash">
    <arg line="-c 'cp -pr env/* .'" />
</exec>

但后者仅适用于安装了bash的系统。

另请查看rsync而不是cp。可能会更好,因为它可以清理旧文件。但是,使用bashrsync等工具会使您的脚本绑定到* NIX系统。