0

以下 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
...

其他所有类似的复制操作似乎都可以正常工作。

4

1 回答 1

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 文件夹中,因此下一个复制任务中的排除过滤器无效。

于 2013-04-03T09:14:27.860 回答