为什么Ant不会复制所有文件?

时间:2016-04-13 10:03:11

标签: java ant

这是一条简单的rebase指令:

copy

,其中

<project name="Project Name" default="Default target">
    <!-- ... -->

    <copy todir="${tomcat.lib.dir}" verbose="true">
       <fileset dir="." includes="${dir_bdd},${p6spy_properties}" />
    </copy>

    <!-- ... -->    
</project>

${tomcat.lib.dir}=D:/Tomcat/Tomcat7/apache-tomcat-7.0.47-windows-x64/apache-tomcat-7.0.47/lib ${dir_bdd},${p6spy_properties}=../lib/ojdbc-10.2.0.3.jar,../lib/p6spy-2.2.0.jar,../lib/spy.properties 参数中列出的所有文件均未复制到includes

文件结构

${tomcat.lib.dir}

构建脚本从Eclipse启动。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

问题与您为..属性指定includes的父目录这一事实有关。

来自Ant documentation

  

仅考虑在该基本目录下找到的文件。因此,虽然可以使用类似../foo.java的模式,但在应用时它不会匹配任何内容,因为永远不会扫描基目录的父文件。

这适用于这种情况,因为includes属性包含隐式PatternSet。

因此,您必须更改${dir_bdd}${p6spy_properties}属性,以便:

${dir_bdd},${p6spy_properties}=lib/ojdbc-10.2.0.3.jar,lib/p6spy-2.2.0.jar,lib/spy.properties

然后,您可以使用

<copy todir="${tomcat.lib.dir}" verbose="true">
   <fileset dir=".." includes="${dir_bdd},${p6spy_properties}" />
</copy>

这样,文件集的根目录将设置为父目录,您可以选择它下面的所需文件。

答案 1 :(得分:0)

以下是我解决问题的方法:

<copy todir="${tomcat.lib.dir}" verbose="true">
   <fileset dir="${lib_dir}" includes="${dir_bdd},${p6spy_properties}" />
</copy>

,其中

${lib_dir}=../lib
${dir_bdd},${p6spy_properties}=ojdbc-10.2.0.3.jar,p6spy-2.2.0.jar,spy.properties
相关问题