下面的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
...
嗯,最后,事后看来,答案是显而易见的。
在最初的问题中,为了简洁起见,我省略了目标中的一些任务。看来,我不应该。
更完整的代码片段应该是这样的:
...
<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文件夹中,因此下一个复制任务中的排除过滤器不起作用。