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

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

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

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

下面是 build.xml 的内容:

<?xml version="1.0" encoding="UTF-8"?>

<project name="project" default="warTest" basedir=".">
    <!-- ****************** 根据实际项目可变参数【开始】 ***************************** -->
    <!-- 源代码路径 -->
    <property name="src" value="${basedir}/src.java.main"></property>

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

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

    <!-- war 文件名称 -->
    <property name="warFile" value="order.war"></property>

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

    <!-- ****************** 根据实际项目可变参数【结束】 ***************************** -->


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

    <!-- build 文件夹路径 -->
    <property name="buildPath" value="${basedir}/build"></property>

    <!-- war 文件所在路径 -->
    <property name="warFilePath" value="${buildPath}/${warFile}"></property>

    <!-- lib 文件夹所在路径 -->
    <property name="lib" value="${webInf}/lib"></property>


    <!-- 清理:删除原有的 build 文件夹,并创建一个新的 build 文件夹 -->
    <target name="clean">
        <delete dir="${buildPath}"/>
        <mkdir dir="${buildPath}"/>
    </target>

    <!-- 定义 lib 路径 -->
    <path id="project.lib">
        <fileset dir="${lib}">
            <include name="**/*.jar"/>
        </fileset>
        <fileset dir="${tomcat}\lib">
        </fileset>
    </path>

    <!-- 编译:编译 src 文件夹中的 java 文件,把编译后的 class 文件放到创建的文件夹下 -->
    <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>

    <!-- 打测试环境的 war 包 -->
    <target name="warTest" depends="compile,copyResource">
        <!-- 删除原有的 war包 -->
        <delete dir="${warFilePath}"/>
        <!-- 打新的 war包 -->
        <war destfile="${warFilePath}" webxml="${webInf}/web.xml">
            <!-- 将非 jar和非 class文件拷贝到 war 包的对应路径下 -->
            <fileset dir="${webContent}">
                <include name="**/**.*"/>
                <exclude name="**/*.jar"/>
                <exclude name="**/*.class"/>
            </fileset>
            <!-- 将 jar 和 class文件拷贝到 war包的对应路径下。 -->
            <lib dir="${lib}"/>
            <classes dir="${buildPath}"/>
        </war>
    </target>

    <!-- 拷贝 war 包到 tomcat-->
    <target name="copyWarToTomcat">
        <copy todir="${tomcat}/webapps" file="${warFilePath}"/>
    </target>

    <!-- 停止 tomcat-->
    <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>

    <!-- 启动 tomcat -->
    <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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值