Ant构建脚本没有为java servlet类运行

时间:2014-02-13 20:57:16

标签: java ant jboss

Iam尝试运行我的Ant构建并创建构建成功。我还看到正在创建的目标文件夹中的已编译类。但是当我接受war文件并在jboss服务器中部署时,它给了我异常,说我的类没有classnotfound异常。

Build.xml看起来像:

      <property name="javabase" value="${gi.basedir}/search/src"/>
  <property name="targetdir" value="${gi.basedir}/search/targets"/>
  <property name="wardir" value="${targetdir}/war"/>
  <property name="externaljars" value="WebContent/WEB-INF/lib"/>
  <property name="java-compiled" value="${targetdir}/java-compiled"/>
  <property name="srchwardir" value="${wardir}/warpath"/>

  <target name="init" depends="clean">
         <mkdir dir="${srchwardir}"/>
     <mkdir dir="${targetdir}"/>
     <mkdir dir="${wardir}"/>
  </target>

 <target name="compile" depends="init" description="compile the source " >
    <mkdir dir="${java-compiled}"/>
    <!-- Compile the java code from ${src} into ${java-compiled} -->
    <javac srcdir="${javabase}" destdir="${java-compiled}">
<include name="agsrchpackage.*.java"/>

    </javac>
     </target>

<target name="Main" depends="compile">
    <description>Main target</description>
 </target>

<path id="java.classpath">
    <fileset dir="${externaljars}">
        <include name="*.jar" />
    </fileset>
    </path>
<war destfile="${srchwardir}/agsrchpackage.war" webxml="WebContent/WEBINF/web.xml">
    </war>  

</project>

1 个答案:

答案 0 :(得分:2)

构建脚本中存在一些问题 - 这是我使用您的文件夹名称运行的问题。您没有干净的目标,并且webxml参数错误 - 该文件夹的“WEB-INF”应该不仅仅是WEBINF。

这将构成一场战争。看起来你还没有把你的班级列入正在建设的战争中。我在war标签中添加了标签。

 <project name="test" basedir="." default="usage">

 <property name="gi.basedir" value="."/>
 <property name="javabase" value="${gi.basedir}/search/src"/>
 <property name="targetdir" value="${gi.basedir}/search/targets"/>
 <property name="wardir" value="${targetdir}/war"/>
 <property name="externaljars" value="WebContent/WEB-INF/lib"/>
 <property name="java-compiled" value="${targetdir}/java-compiled"/>
 <property name="srchwardir" value="${wardir}/warpath"/>

 <path id="java.classpath">
   <fileset dir="${externaljars}">
     <include name="*.jar" />
   </fileset>
 </path>

 <target name="clean">
    <delete dir="${srchwardir}"/>
    <delete dir="${targetdir}"/>
    <delete dir="${wardir}"/>
 </target>

 <target name="init" depends="clean">
    <mkdir dir="${srchwardir}"/>
    <mkdir dir="${targetdir}"/>
    <mkdir dir="${wardir}"/>
 </target>

<target name="compile" depends="init" description="compile the source " >
   <mkdir dir="${java-compiled}"/>
   <javac srcdir="${javabase}" destdir="${java-compiled}">
     <classpath refid="java.classpath"/>
   </javac>
</target>

<target name="war" depends="compile">
   <war destfile="${srchwardir}/agsrchpackage.war" webxml="WebContent/WEB-INF/web.xml">
       <classes dir="${java-compiled}"/>
       <lib dir="${externaljars}">
       <include name="**/*.jar"/>
       </lib>
       <fileset dir="${javabase}">
           <include name="**/log4j.properties"/>
      </fileset>
   </war>  
 </target>

</project>

你可以通过像这样运行jar程序来查看战争的内容,并列出战争的内容。

jar -tf search/targets/war/warpath/arsrchpackage.war