在WAR文件中的WEB-INF文件夹下打包Java类

时间:2015-02-04 06:33:45

标签: java ant war

我正在使用以下命令在ANT脚本中打包war文件

<target name="war" depends="compile">
    <war destfile="${deploy.dir}/vms_war.war" webxml="${web.dir}/WEB-INF/web.xml">
      <fileset dir="${classes.dir}">
        <include name="**/*.class"/>
        <exclude name="test/**/*.class"/>
      </fileset>
       <fileset dir="${src.dir}">
       <include name="**/*.xml"/>
      </fileset>
      <fileset dir="${web.dir}">
        <include name="**/*.jspx"/>
        <include name="**/*.jsp"/>
        <include name="**/*.html"/>                        
        <include name="WEB-INF/*.xml"/>
        <include name="WEB-INF/lib/*.*"/>
        <exclude name="**/web.xml"/>
      </fileset>
    </war>
  </target>

战争打包时,结构如下

--WEB-INF
  lib 
  web.xml
  faces-config.xml
--mypackageappname
     app
     test
     Login.class
     Authenticate.class
     ....

我想要实现的是在打包war时,我希望将java类放在WEB-INF文件夹下以及lib文件夹中。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

WAR Task文档说明(部分)嵌套classes元素指定了FileSet。此文件集中包含的所有文件将最终位于war文件的WEB-INF / classes目录中。我认为您想要类似

的内容
<war destfile="${deploy.dir}/vms_war.war" webxml="${web.dir}/WEB-INF/web.xml">
  <classes dir="${classes.dir}" />
  <fileset dir="${src.dir}">
    <include name="**/*.xml"/>
  </fileset>
  <fileset dir="${web.dir}">
    <include name="**/*.jspx"/>
    <include name="**/*.jsp"/>
    <include name="**/*.html"/>                        
    <include name="WEB-INF/*.xml"/>
    <include name="WEB-INF/lib/*.*"/>
    <exclude name="**/web.xml"/>
  </fileset>
</war>

答案 1 :(得分:1)

首先清空您的课程,然后将jar放入war文件中。像这样:

<target name="war" depends="compile">
    <jar jarfile="${web.dir}/WEB-INF/lib/vms.jar">
      <fileset dir="${classes.dir}">
        <include name="**/*.class"/>
        <exclude name="test/**/*.class"/>
      </fileset>
    </jar>
    <war destfile="${deploy.dir}/vms_war.war" webxml="${web.dir}/WEB-INF/web.xml">
      <fileset dir="${src.dir}">
        <include name="**/*.xml"/>
      </fileset>
      <fileset dir="${web.dir}">
        <include name="**/*.jspx"/>
        <include name="**/*.jsp"/>
        <include name="**/*.html"/>                        
        <include name="WEB-INF/*.xml"/>
        <include name="WEB-INF/lib/*.*"/>
        <exclude name="**/web.xml"/>
      </fileset>
    </war>
  </target>