Ant build.xml的一个示例

概述

  ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。在实际软件开发中,有很多地方可以用到ant。但是目前使用更多一些的是Maven、groovy等。本文仅是作为学习的笔记方便以后查阅。

优点

ant 是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点:
1、跨平台性:Ant是纯Java语言编写的,所以具有很好的跨平台性。
2、操作简单:Ant是由一个内置任务和可选任务组成的,用ant任务就像是在dos中写命令行一样。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。
3、维护简单、可读性好、集成简单:由于Ant构建文件 时XML格式的文件,所以很容易维护和书写,而且结构很清晰。Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。

demo

下面是一个配置示例:
build.properties

userweb.root.dir=/opt/demo/user
jre.dir=/opt/Java/jdk1.7.0_79
web.lib.home=/opt/lib/syl
db.dir=/opt/work/user/20160825

build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="user" default="all">
    <!-- 配置文件 -->
    <property file="build.properties" />

    <!-- 时间戳格式 -->
    <tstamp>
        <format property="date" pattern="yyyyMMdd" />
    </tstamp>

    <!--基础目录定义 -->
    <property name="userweb.dir" value="${userweb.root.dir}" />
    <property name="jre.dir" value="${jre.dir}" />
    <property name="db.dir" value="${db.dir}" />
    <property name="web.lib.dir" value="${web.lib.home}" />
    <property name="base.tmp" location="${userweb.dir}/tmp/" />
    <property name="base.target" location="${base.tmp}/target/" />
    <property name="base.build" location="${base.tmp}/build/" />
    <property name="base.db" location="${base.build}/db/" />
    <property name="base.user" location="${base.build}/user/" />
    <property name="base.web.inf" location="${base.user}/WEB-INF/" />
    <property name="base.class" location="${base.user}/WEB-INF/classes" />

    <!-- 初始化 -->
    <target name="init" description="Build initialization" depends="clean">
        <echo message="Begin to init environment ... " />
        <mkdir dir="${base.tmp}" />
        <mkdir dir="${base.build}" />
        <mkdir dir="${base.db}" />
        <mkdir dir="${base.user}" />
        <mkdir dir="${base.web.inf}" />
        <mkdir dir="${base.class}" />
        <mkdir dir="${base.target}" />
        <echo message="End to init environment ... " />
    </target>

    <!-- 清理工程 -->
    <target name="clean" description="Build initialization">
        <echo message="Begin to clean ... " />
        <delete dir="${base.tmp}" />
        <echo message="End to clean ... " />
    </target>

    <!-- 编译字节码路径 -->
    <path id="user.classpath">
        <fileset dir="${jre.dir}" />
        <fileset dir="${web.lib.dir}" />
    </path>

    <!-- 源码路径 -->
    <path id="user.sourcepath">
        <dirset dir="${userweb.dir}">
            <include name="src/com/user/mapping" />
            <include name="resources" />
        </dirset>
    </path>

    <!-- 编译 -->
    <target name="compile">
        <echo message="Begin to compile src ..." />
        <javac srcdir="${userweb.dir}/src" destdir="${base.class}/"
            includeAntRuntime="false" encoding="UTF-8" debug="true">
            <classpath refid="user.classpath" />
        </javac>
        <copy todir="${base.class}">
            <fileset dir="${userweb.dir}/resources">
                <type type="file" />
            </fileset>
        </copy>
        <copy todir="${base.class}/com/user/mapping">
            <fileset dir="${userweb.dir}/src/com/user/mapping" />
        </copy>
        <echo message="End to compile src" />
    </target>

    <!-- 构建工程 -->
    <target name="build">
        <echo message="Begin to build user ..." />
        <!--
        <copy todir="${base.web.inf}/lib">
            <fileset dir="${web.lib.dir}" />
        </copy>
        -->
        <copy file="${userweb.dir}/WebContent/WEB-INF/web.xml" tofile="${base.web.inf}/web.xml" />
        <copy todir="${base.user}">
            <fileset dir="${userweb.dir}/WebContent">
                <exclude name="${userweb.dir}/WebContent/WEB-INF" />
            </fileset>
        </copy>
        <copy todir="${base.db}">
            <fileset dir="${db.dir}" />
        </copy>
        <echo message="End to build user" />
    </target>

    <!-- 打包 -->
    <target name="zip">
        <zip destfile="${base.target}/user-${date}.zip">
            <fileset dir="${base.build}" />
        </zip>
    </target>

    <target name="all" depends="init, compile, build, zip" description="build all"/>
</project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值