ant脚本编写

使用ant脚本前的准备

1、下载一个ant安装包。如:apache-ant-1.8.4-bin.zip。解压到E盘。

2、配置环境变量。新增ANT_HOME:E:apache-ant-1.8.4;PATH增加:E:apache-ant-1.8.4in。

3、检查ant是否配置完成。运行->cmd输入:ant -version。查看是否打印ant的版本号。

打包的实质

生成jar包的实质

1、编译工程src文件夹下的Java文件,生成相应的class文件。

2、将所有的class文件集合成jar包。

生成war包的实质

1、编译工程src文件夹下的java文件,生成相应的class文件。

2、将工程WebContent下的除了class文件和jar包以外的文件,全部拷贝到war包的对应目录下。

3、将编译生成的class文件,全部拷贝到war包WEB-INF/classes文件夹下。

4、将工程lib中的jar包,全部拷贝到war包的WEB-INF/lib下。最后压缩成war包。

一个生成war包的ant脚本代码

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

<!-- 定义一个工程,默认任务为warFile。 -->
<project name="Visit" default="warFile" basedir=".">
    
    <!-- 定义属性,打成war包的名称。 -->
    <property name="warFileName" value="VisitFiles.war"></property>
    
    <!-- 定义路径,编译java文件时用到的jar包。 -->
    <path id="project.lib">
        <fileset dir="${basedir}/WebContent/WEB-INF/lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    
    <!-- 定义任务,清空任务:清空原有的class文件,创建新的build路径。 -->
    <target name="clean">
        <delete dir="${basedir}/build" />
        <mkdir dir="${basedir}/build" />
    </target>
    
    <!-- 定义任务,编译src文件夹中的java文件,编译后的class文件放到创建的文件夹下。 -->
    <target name="compile" depends="clean">
        <javac srcdir="${basedir}/src" destdir="${basedir}/build" includeantruntime="false">
            <classpath refid="project.lib">
            </classpath>
        </javac>
    </target>
    
    <!-- 定义默认任务,将class文件集合成jar包。 -->
    <target name="warFile" depends="compile">
        <!-- 删除原有war包。 -->
        <delete dir="${basedir}/${warFileName}" />
        <!-- 建立新war包。 -->
        <war destfile="${basedir}/${warFileName}" webxml="${basedir}/WebContent/WEB-INF/web.xml">
            <!-- 将非jar和非class文件拷贝到war包的对应路径下。 -->
            <fileset dir="${basedir}/WebContent">
                <include name="**/**.*" />
                <exclude name="**/*.jar"/>
                <exclude name="**/*.class"/>
            </fileset>
            <!-- 将jar和class文件拷贝到war包的对应路径下。 -->
            <lib dir="${basedir}/WebContent/WEB-INF/lib" />
            <classes dir="${basedir}/build" />
        </war>
    </target>
    
</project>

 另一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<project name="gsApi" basedir="." default="afterClean">
    <description>gsApi</description>
    <tstamp prefix="start">
        <format property="timestamp" pattern="yyyy_MM_dd" />
        <format property="vsstimestamp" pattern="yyyy_MM_dd_hh_mm" />
    </tstamp>
    <property name="projectName" value="gsApi"></property>
    <property name="src" value="../" />
    <property name="debugging" value="on" />
    <property name="classes" value="WEB-INF/classes">
    </property>
    <property name="lib" value="WEB-INF/lib"></property>
    <property name="config" value="../resources" />

    
    <property name="srcDir" value="./webapp"></property>
    

    <target name="init">
        <tstamp>
            <format property="build.time" pattern="yyyy-MM-dd HH:mm:ss aa" />
        </tstamp>
        <echo message="build time : ${build.time}" />
    </target>

    <target name="clean" depends="init">
        <delete dir="${classes}" />
    </target>

    <target name="prepare" depends="clean">
        <mkdir dir="${classes}" />
        <copy todir="${classes}">
             <fileset dir="${config}">
                 <include name="**/*.*" />
             </fileset>
         </copy>
    </target>
    

    <target name="compile" depends="prepare">
        <javac srcdir="${src}" destdir="${classes}" debug="true" includeantruntime="false" debuglevel="lines,vars,source" encoding="UTF-8" fork="true" memoryMaximumSize="512m">
            <classpath>
                <fileset dir="${lib}">
                    <include name="**/*.jar" />
                </fileset>
            </classpath>
            <compilerarg line="-XDignore.symbol.file"/>
        </javac>
    </target>
    
    
    <target name="mkwar" depends="compile">
        <war destfile="../../../target/${projectName}.war" webxml="${basedir}/WEB-INF/web.xml">
            <fileset dir="${basedir}/">
                <include name="**/*.*" />
            </fileset>
        </war>
    </target>
    
    
    <target name="afterClean" depends="mkwar">
    </target>
    
</project>
原文地址:https://www.cnblogs.com/shaohz2014/p/5872706.html