【问题标题】:Include files into war classes folder将文件包含到战争类文件夹中
【发布时间】:2013-10-27 14:27:53
【问题描述】:

有没有办法将一些文件包含到战争的类文件夹中? 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>
...

【问题讨论】:

  • 您要包括哪些?
  • xml 和 sql 文件,试图在这一行包含 em: ...但它失败了。

标签: java eclipse ant


【解决方案1】:

我要感谢您花一点时间来考虑这个解决方案。 无论如何,我需要的只是简单得多

<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>

只需将包含或包含属性写入类

【讨论】:

    【解决方案2】:

    &lt;classes/&gt; 子实体可用于*.class 文件以外的内容。所有&lt;classes/&gt; 子实体所做的就是将指定的文件放在你的war 的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>
    

    (我会使用您的示例,但您有 &lt;fileset dir="${classes.dir}",这意味着您将在您的 ${classes.dir}(您编译代码的位置)中放入您的战争的根目录,这可能不是您想要的。 (

    您也可以使用&lt;zipfileset/&gt; 代替普通的&lt;fileset&gt;&lt;zipfileset&gt; 采用与&lt;fileset&gt; 相同的所有参数和子实体,但还包括一个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>
    

    【讨论】:

      猜你喜欢
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多