带有排除模式的Ant副本似乎不起作用

时间:2013-04-02 12:04:30

标签: ant copy

以下Ant代码段应该有效:

    ...
    <mkdir dir="${web.build.war.dir}/WEB-INF/classes"/>
    <copy todir="${web.build.war.dir}/WEB-INF/classes">
        <fileset dir="${web.build.classes.dir}">
            <exclude name="**/pos/**" />
        </fileset>
    </copy>
    ...

它应该将每个文件从${web.build.classes.dir}复制到${web.build.war.dir}/WEB-INF/classes,但路径中包含/pos/的文件除外。

但出于某种原因,当我在项目上find build时,我得到的输出看起来像这样:

...
build/war/WEB-INF/classes/my/path/to/pos
build/war/WEB-INF/classes/my/path/to/pos/Class1.class
build/war/WEB-INF/classes/my/path/to/pos/Class2.class
build/war/WEB-INF/classes/my/path/to/pos/Class3.class
build/war/WEB-INF/classes/my/path/to/pos/Class4.class
build/war/WEB-INF/classes/my/path/to/pos/Class5.class
build/war/WEB-INF/classes/my/path/to/pos/Class6.class
...

其他类似的复制操作似乎都运行得很好。

1 个答案:

答案 0 :(得分:0)

呃,最后,后见之明答案非常明显。

在最初的问题中,为了简洁起见,我省略了目标中的一些任务。出现,我应该没有。

更完整的代码片段就是这样:

    ...
    <mkdir dir="${web.build.war.dir}"/>
    <copy todir="${web.build.war.dir}">
        <fileset dir="${web.src.web.dir}">
            <exclude name="**/pos/**"/>
            <exclude name="security/**"/>
        </fileset>
    </copy>

    <mkdir dir="${web.build.war.dir}/WEB-INF/classes"/>
    <copy todir="${web.build.war.dir}/WEB-INF/classes">
        <fileset dir="${web.build.classes.dir}">
            <exclude name="**/pos/**" />
        </fileset>
    </copy>
    ...

第一个复制任务会将所有资源从Web资源的开发副本复制到 war-to-be 文件夹。

我使用的是Eclipse IDE,并且项目配置为将java类构建到${web.src.web.dir}/WEB-INF/classes文件夹,第一个任务只是将所有类复制到war文件夹,因此在下一个复制任务中将排除过滤器复制没有效果。