ANT构建JAVA WEB工程

时间:2022-01-02 18:38:57

下载的相关包
ANT官网:http://ant.apache.org/ 下载Binary Distributions所需的版本 例如apache-ant-1.9.6
ANT的SVN插件: http://subclipse.tigris.org/svnant.html 下载与服务器svn对应的插件

安装
ANT安装:解压至任意文件夹,并在环境变量中配置ANT_HOME PATH。在cmd中输入ant若出现如下则表明配置完成。
ANT构建JAVA WEB工程
Svn插件:将下载的svn插件包中的lib下jar文件拷贝至ant的lib中即可。

未知原因通过svnant插件一直报找不到相关jar错误,未成功。相关代码如下:

<property name="svnurl" value="http://svn.xxx.com/xxx" />
  <property name="svn.username" value="username" />
  <property name="svn.password" value="password" />

  <path id="path.svnant">
    <fileset dir="${basedir}">
      <include name="**/*.jar"/>
    </fileset>
  </path>

  <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
  <target name="svncheckout" >
    <svnSetting id="svnparams" username="${svn.username}" password="${svn.password}" javahl="true"/>
    <svn refid="svnparams">
      <checkout url="${svnurl}" destPath="${destPath}" />
    </svn>
  </target>

由于一直未成功,就先对项目源文件进行编译打包,如果svnant还是这样,可能会换其他方法代替。
总之整体build.xml流程思路是:在svn中checkout/export源码

  1. 对缓存文件夹进行操作:删除缓存文件夹,创建空缓存文件夹。文件夹结构视项目而定。
  2. 通过svn插件,在svn上下载最新的源码至缓存文件夹,如svnant插件,可以在ant的xml文件中使用checkout/export,export比较好。
  3. 编译项目中的java文件,将转换的class文件放至WEB-INF/classes。然后将其他相关文件转入相应的缓存文件夹中,若依赖包lib,jsp等。
  4. 打包为war文件至缓存文件夹。
  5. 关闭服务器->复制war到服务器webapps中->开启服务器
    基本流程就是这些,下面把主要源码贴上。
<?xml version="1.0" encoding="UTF-8"?>
<project name="userver" basedir=".">
    <!-- 根目录basedir f:/ -->
    <!-- 目录属性配置 -->
    <property name="destbuild" value="build" description="输出目标目录"/>
    <property name="web" value="${destbuild}/WEB-INF" description="输出web目录"/>
    <property name="web.class" value="${web}/classes" description="编译后class文件目录"/>
    <property name="web.lib" value="${web}/lib" description="依赖jar包"/>
    <property name="web.ext" value="${web}/ext" description="依赖jar包2"/>
    <property name="userver" value="F:/xj/workspace/userver" description="工程目录"/>
    <property name="src" value="${userver}/src" description="工程src目录"/>
    <property name="webRoot" value="${userver}/WebRoot" description="工程web目录"/>
    <property name="lib" value="${webRoot}/WEB-INF/lib" description="工程依赖jar包"/>
    <property name="ext" value="${webRoot}/WEB-INF/ext" description="工程依赖jar包2"/>
    <property name="j2ee.lib" value="${basedir}/xj/apache-tomcat-7.0.61/lib" description="j2ee包"/>

    <property name="encoding" value="utf-8" description="编码"/>
    <!-- 工程依赖的jar包引用-->
    <path id="ext.path">
        <fileset dir="${ext}">
            <include name="*.jar"/>
        </fileset>
        <pathelement path="${userver}/WebRoot/WEB-INF/ext"/>
    </path>
    <path id="project.classpath">
        <fileset dir="${lib}">
            <include name="*.jar"/>
        </fileset>
        <fileset dir="${j2ee.lib}">
                        <include name="**/*.jar"/> 
                    </fileset>
        <pathelement path="${userver}/WebRoot/WEB-INF/lib"/>
        <path refid="ext.path"/>
    </path>
    <!-- clean:删除缓存文件夹 -->
    <target name="clean" >
        <delete dir="${destbuild}"/>
    </target>
    <!-- init:创建缓存文件夹 -->
    <target name="init" depends="clean" >
        <mkdir dir="${destbuild}"/>
        <mkdir dir="${web}"/>
        <mkdir dir="${web.class}"/>
        <mkdir dir="${web.lib}"/>
        <mkdir dir="${web.ext}"/>
    </target>

    <!-- compile:编译java文件 -->
    <target name="compile" depends="init">
        <javac srcdir="${src}" destdir="${web.class}" source="1.7" target="1.7" debug="on" deprecation="false" optimize="false" failonerror="true">
            <compilerarg line="-encoding UTF-8"/>
            <classpath refid="project.classpath"></classpath>
        </javac>
        <!-- 复制源码中的非java文件 -->
        <copy todir="${web.class}">
            <fileset dir="${src}" excludes="**/*.java">
            </fileset>
        </copy>
        <!-- 复制webroot中的非class文件到目标web -->
        <copy todir="${destbuild}">
            <fileset dir="${webRoot}" excludes="**/*.class">
            </fileset>
        </copy>
    </target>

    <!-- war:打包 -->
    <target name="war" depends="compile">
        <war destfile="${basedir}/${ant.project.name}.war" basedir="${destbuild}" webxml="${web}/web.xml"/>
    </target>
    <!-- 可以直接将包放入tomcat.webapps中,tomcat.shutdown copywar tomcat.start -->

</project>

ANT构建JAVA WEB工程
注:编译过程出现错误,可能是source版本过低,相关依赖包未引入造成的。