将文件包含在war类文件夹中

时间:2013-10-27 14:27:53

标签: java eclipse ant

有没有办法将一些文件包含在war的classes文件夹中? Eclipse构建了正确的战争,但是我的ant脚本无法将文件包含到类文件夹中。

...
    <property name="src.dir" location="src" />
    <property name="build.dir" location="build" />
    <property name="classes.dir" location="${build.dir}/classes" />

    <target name="war" depends="mklib, retrieve, compile">
    <war destfile="${war.file}" webxml="${webContent.dir}/WEB-INF/web.xml">
        <classes dir="${classes.dir}" />
        <fileset dir="${webContent.dir}" excludes="**/servlet-api*.jar,**/jsp-api*.jar" />
        <fileset dir="${classes.dir}" includes="**/*.xml,**/*.sql" />
    </war>
</target>
...

2 个答案:

答案 0 :(得分:2)

我要感谢你,他花了一点时间考虑这个解决方案。 无论如何,我所需要的只是更简单

<target name="war" depends="mklib, retrieve, compile">
    <war destfile="${war.file}" webxml="${webContent.dir}/WEB-INF/web.xml">
        <classes dir="${classes.dir}" />
        <classes dir="${src.dir}" includes="**/start.xml, **/per*.xml, **/*.sql" />
        <fileset dir="${webContent.dir}" excludes="**/servlet-api*.jar,**/jsp-api*.jar" />
    </war>
</target>

所有需要做的就是在类

中写入include或includes属性

答案 1 :(得分:1)

<classes/>子实体可用于除*.class个文件之外的其他内容。所有<classes/>子实体都会将指定的文件放在战争的WEB-INF/classes目录中:

<target name="war" depends="mklib, retrieve, compile">
<war destfile="${war.file}" webxml="${webContent.dir}/WEB-INF/web.xml">
    <classes dir="${classes.dir}" />
    <classes dir="${resources.dir}"/>  <!-- Other files that are in WEB-INF/classes -->
</war>

(我会使用你的例子,但你有<fileset dir="${classes.dir}"这意味着你将你的${classes.dir}(编译代码的地方)放入你的战争根源中,这可能不是你想要什么。(

您也可以使用<zipfileset/>代替普通<fileset><zipfileset>采用与<fileset>相同的所有参数和子实体,但也包含prefix参数,您可以在其中指定前缀目录:

<target name="war" depends="mklib, retrieve, compile">
<war destfile="${war.file}" webxml="${webContent.dir}/WEB-INF/web.xml">
    <classes dir="${classes.dir}" />
    <classes dir="${resources.dir}"/>
    <zipfileset prefix="foo/resources"
       dir="${foo.dir}">
       <include name="**/*.foo"/>
    </zipfileset>
</war>