Ant 对java webapp打包war 的配置

时间:2022-06-16 09:33:01

以下是Ant 的配置文档build.xml,位置在工程的根目录下,运行时,选择war目标,即可生成war包

<?xml version="1.0" encoding="utf-8"?>
<!--================定义根basedir,根路径=================-->
<project name="iams" basedir=".">
<!--=================定义build目录=======================-->
<property name="build.base.dir" value="${basedir}/build" />
<property name="build.web.dir" value="${build.base}/WEB-INF" />
<property name="build.class.dir" value="${build.web.dir}/classes" />
<property name="build.lib.dir" value="${build.web.dir}/lib" />
<!--===============定义webapp的相关路径===================-->
<property name="app.src.dir" value="${basedir}/src" />
<property name="app.web.dir" value="${basedir}/WebRoot" />
<property name="app.lib.dir" value="${app.web.dir}/WEB-INF/lib" />
<!--================定义打包后的目标路径=======================-->
<property name="war.target.dir" value="${basedir}/target" />
<!--======================定义包路径========================-->
<fileset id="jars.file" dir="${app.lib.dir}">
    <!--第三方包不在WEB/lib根目录下,定义该属性将jar包含进来,eg:<include name="log/*.jar" />,表示将WEB-INF/lib/log目录的jar包进来 -->
    <include name="*.jar" />
</fileset>
<!--==============定义clean目标:清理build临时文件夹=============-->
<target name="clean" description="clean build">
    <echo message="清理build文件夹" />
    <delete dir="${build.base.dir}" />
</target>
<!--===========定义init目标:创建build临时文件夹===============-->
<target name="init" description="create directory" depends="clean">
    <echo message="初始化:创建build相关目录" />
    <mkdir dir="${build.base.dir}" />
    <mkdir dir="${build.web.dir}" />
    <mkdir dir="${build.src.dir}" />
    <mkdir dir="${build.lib.dir}" />
    <mkdir dir="${target.dir}" />
</target>
<!--==============定义compile目标:编译工程源代码===============-->
<target name="compile" description="compile app" depends="init" >
    <echo message="编译源代码" / >
    <javac srcdir="${app.src.dir}" destdir="${build.class.dir}" debug="on" >
<!--设置编码:也可在<javac> 中添加属性encoding="uft-8"-->
        <compilerarg line="-encoding UTF-8"/>
        <classpath>
            <fileset refid="basic.jars.file" />
        </classpath>
    </javac>
    <!--复制classpath中的配置文件-->
    <copy todir="${build.class.dir}">
        <fileset dir="${src}" excludes="**/*.java"/>
    </copy>
    <!--复制/WEB-INF/lib下的jar包文件-->
    <copy todir="${build.lib.dir}">
        <fileset refid="jars.file" />
    </copy>
    <!--复制WebRoot下的文件-->
    <copy todir="${build.base.dir}">
        <fileset dir="${app.web.dir}"/>
    </copy>
</target>
<!--==================== 定义war目标:打war包=================-->
<target name="war" description="war" depends="compile,clean">
    <echo message="生成war包"/>
    <war destfile="${war.target.dir}/${ant.project.name}.war" basedir="${build.base.dir}">
    </war>  
</target>
</project>