手把手教你使用 Ant 工具打 WAR 包

因为是一个老项目,依赖的包很混乱,没有办法使用 Maven 打包,所以只好又重拾起 Ant 工具咯。

因为 IDEA 自带 Ant 插件,所以我们只需要编写一个 build.xml 文件即可。

打包规则如下:
1. 清理 build 文件夹。
2. 定义 lib 路径,即依赖包路径(因为是 Web 项目,所以里面也依赖了 Tomcat 的 lib 文件夹)。
3. 编译。

下面是 build.xml 的内容:



<project name="project" default="warTest" basedir=".">
    
    
    <property name="src" value="${basedir}/src.java.main">property>

 
    <property name="resource"
              value="${basedir}/src.main.resource">property>

    
    <property name="webContent"
              value="${basedir}/src.java.webapp">property>

    
    <property name="warFile" value="order.war">property>

    
    <property name="tomcat" value="C:\Program Files (x86)\apache-tomcat-8.0.36"/>

    


    
    <property name="webInf"
              value="${webContent}/WEB-INF">property>

    
    <property name="buildPath" value="${basedir}/build">property>

    
    <property name="warFilePath" value="${buildPath}/${warFile}">property>

    
    <property name="lib" value="${webInf}/lib">property>


    
    <target name="clean">
        <delete dir="${buildPath}"/>
        <mkdir dir="${buildPath}"/>
    target>

    
    <path id="project.lib">
        <fileset dir="${lib}">
            <include name="**/*.jar"/>
        fileset>
        <fileset dir="${tomcat}\lib">
        fileset>
    path>

    
    <target name="compile" depends="clean">
        <javac srcdir="${src}" destdir="${buildPath}" includeantruntime="false">
            <classpath refid="project.lib">
            classpath>
        javac>
    target>

 
    <target name="copyResource">
        <copy todir="${webInf}/classes">
            <fileset dir="${resource}">
                <include name="**/**.*"/>
            fileset>
        copy>
    target>

    
    <target name="warTest" depends="compile,copyResource">
        
        <delete dir="${warFilePath}"/>
        
        <war destfile="${warFilePath}" webxml="${webInf}/web.xml">
            
            <fileset dir="${webContent}">
                <include name="**/**.*"/>
                <exclude name="**/*.jar"/>
                <exclude name="**/*.class"/>
            fileset>
            
            <lib dir="${lib}"/>
            <classes dir="${buildPath}"/>
        war>
    target>

    
    <target name="copyWarToTomcat">
        <copy todir="${tomcat}/webapps" file="${warFilePath}"/>
    target>

    
    <target name="stopTomcat">
        <exec executable="cmd" dir="${tomcat}/bin" failonerror="false"
              append="true">
            <env key="CATALINA_HOME" path="${tomcat}"/>
            <arg value="/c shutdown.bat"/>
        exec>
    target>

    
    <target name="startTomcat" depends="copyWarToTomcat">
        <exec executable="cmd" dir="${tomcat}/bin" failonerror="false"
              append="true">
            <env key="CATALINA_HOME" path="${tomcat}"/>
            <arg value="/c startup.bat"/>
        exec>
    target>


project>

说明:

  • 【根据实际项目的可变参数】段落,是需要依据实际情况进行配置的,其他的部分可以不变。
  • 脚本中还加入了【启动 tomcat】与【停止 tomcat】的脚本任务。【启动 tomcat】的任务会先把之前打好的 WAR 包拷贝到 tomcat 的 webapps 文件夹下,然后再启动。

[fix] 添加拷贝资源文件。2018-1-22

你可能感兴趣的:(ant)