当前位置:首页 > 开发 > 编程语言 > 持续集成 > 正文

Ant实例分析

发表于: 2013-07-29   作者:g21121   来源:转载   浏览:
ant
摘要:         下面是一个Ant构建文件的实例,通过这个实例我们可以很清楚的理顺构建一个项目的顺序及依赖关系,从而编写出更加合理的构建文件。           下面是build.xml的代码: <?xml version="1

        下面是一个Ant构建文件的实例,通过这个实例我们可以很清楚的理顺构建一个项目的顺序及依赖关系,从而编写出更加合理的构建文件。

 

        下面是build.xml的代码:

<?xml version="1.0" encoding="UTF-8"?>
<project name="example" basedir="." default="deploy">
	<!-- 引入外部的properties 文件 -->
	<property file="build.properties" />
	<!-- 定义项目名称 -->
	<property name="name" value="AntExample" />
	<!-- tomcat所在目录 -->
	<property name="tomcatHome" value="/usr/local/tomcat" />
	<!-- 应用服务器部署目录 -->
	<property name="webserver" value="${tomcatHome}/webapps" />
	<!-- 源代码目录 -->
	<property name="src" value="src" />
	<!-- 编译的目标路径 -->
	<property name="build" value="./build" />
	<property name="dest" value="./build/classes" />
	<!-- Junit report 目录 -->
	<property name="report" value="${build}/testReport" />
	<!-- WebRoot/WebRoot 相关目录 -->
	<property name="WebRoot" value="./WebRoot" />
	<property name="WebInf" value="${WebRoot}/WEB-INF" />
	<property name="lib" value="${WebInf}/lib" />
	<property name="classes" value="${WebInf}/classes" />
	<!-- 备份目录 -->
	<property name="backup" value="usr/local/backup/${backupTime}" />
	<!-- 获取当前时间 -->
	<tstamp>
		<format property="backupTime" pattern="yyyyMMddHHmm" locale="zh"/>
	</tstamp>
	<!-- sql文件 -->
	<property name="sqlFile" value="./sql/init.sql" />
	
	<!-- 定义classpath 路径,抽象定义,可以多处引用 -->
	<path id="classpath">
		<fileset dir="${lib}">
			<include name="**/*.jar" />
		</fileset>
		<pathelement location="${dest}" />
		<pathelement location="${classes}" />
	</path>
	
	<!-- 初始化:清理构建过的目录,创建新目录 -->
	<target name="init">
		<echo message="=============初始化创建编译目录=============" />
		<delete dir="${build}" />
		<mkdir dir="${build}" />
		<mkdir dir="${dest}" />
		<mkdir dir="${report}" />
		<!-- WebRoot 下的classes -->
		<delete dir="${classes}" />
		<mkdir dir="${classes}" />
	</target>
	
	<!-- 编译java 文件,编译到build/classes 下,再把build/classes 目录复制到WebRoot/WEB-INF/classes 下  -->
	<target name="compile" depends="init">
		<echo message="=============编译源代码=============" />
		<javac encoding="utf-8" srcdir="${src}" destdir="${dest}" includeantruntime="false" debug="on" deprecation="false" optimize="true" failonerror="true" source="1.6" target="1.6">
			<classpath refid="classpath" />
		</javac>
		<copy todir="${classes}">
			<fileset dir="${dest}">
				<exclude name="**/*Test*.*" />
			</fileset>
		</copy>
	</target>
	
	<!-- Junit 测试 -->
	<target name="test" depends="compile" description="run junit test">
		<echo message="=============Junit 测试=============" />
		<delete dir="${report}" />
		<mkdir dir="${report}" />
		<junit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
			<classpath refid="classpath" />
			<formatter type="plain" />
			<batchtest fork="yes" todir="${report}">
				<fileset dir="${dest}">
					<include name="**/*Test*.*" />
					<include name="**/*test*.*" />
				</fileset>
			</batchtest>
		</junit>
		<fail if="tests.failed" />
	</target>
	
	<!-- 编译war 包 -->
	<target name="war" depends="test" description="将工程打成war 包">
		<echo message="=============编译war 包=============" />
		<delete file="${build}/${name}.war" />
		<war warfile="${build}/${name}.war" webxml="${WebInf}/web.xml">
			<fileset dir="${WebRoot}" />
		</war>
	</target>
	
	<!-- 备份原版本war包 -->
	<target name="backupWar" depends="init,compile,test,war" description="备份原版本war包">
		<echo message="=============备份原版本war包=============" />
		<mkdir id="backupDir" dir="${backup}/${backupTime}/" description="按时间创建备份文件夹"/>
		<copy todir="${backupDir}" overwrite="true">
			<fileset file="${webserver}/${name}.war" />
		</copy>
	</target>
	
	<!-- 发布war 包的项目到web 容器下 -->
	<target name="deployWar" depends="backupWar" description="将工程打成war 包">
		<echo message="=============发布war 包的项目到Web 服务器=============" />
		<delete file="${webserver}/${name}.war" />
		<delete file="${webserver}/${name}" />
		<copy todir="${webserver}" overwrite="true">
			<fileset file="${build}/${name}.war" />
		</copy>
	</target>
	
	<!-- 清除 -->
	<target name="delete" description="删除服务器上的war">
		<delete dir="${dest}" />
		<delete dir="${report}" />
		<delete file="${build}/${name}.war" />
		<delete dir="${webserver}/${name}" />
		<delete file="${webserver}/${name}.war" />
	</target>
	
	<!-- 停止tomcat -->
	<target name="shutdownTomcat" depends="deployWar">
		<echo message="=============停止Tomcat=============" />
        <exec dir="${tomcatHome}/bin" executable="bash">
            <env key="CATALINA_HOME" path="${tomcatHome}"/>
            <arg value="shutdown.sh"/>
        </exec>
	</target>
	
	<!-- 启动tomcat -->
	<target name="startTomcat" depends="shutdownTomcat">
		<echo message="=============启动Tomcat=============" />
        <exec dir="${tomcatHome}/bin" executable="bash">
            <env key="CATALINA_HOME" path="${tomcatHome}"/>
            <arg value="startup.sh"/>
        </exec>
	</target>
	
	<!-- 发布程序 -->
	<target name="deploy" depends="startTomcat">
		<echo message="=============发布程序成功=============" />
	</target>
	
	<!-- 直接使用SQL 语句书此话数据库 -->
	<target name="initDB1">
		<sql driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" userid="root" password="test">
			<classpath refid="classpath" />
			CREATE TABLE `USER` (
			  `USR_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
			  `NAME` varchar(20) DEFAULT NULL COMMENT '姓名',
			  `LOGIN_NAME` varchar(64) NOT NULL COMMENT '登录名',
			  `PASSWD` varchar(64) NOT NULL COMMENT '密码',
			  `STATUS` int(11) DEFAULT NULL COMMENT '用户状态',
			  `SAFE_QUESTION` int(11) DEFAULT NULL COMMENT '安全提示问题',
			  `SAFE_ANSWER` varchar(32) DEFAULT NULL COMMENT '安全提示答案',
			  `CREATE_DATE` datetime DEFAULT NULL COMMENT '创建日期',
			  `ACTIV_CODE` varchar(32) DEFAULT NULL COMMENT '激活码',
			  `USR_TYPE` int(11) DEFAULT NULL COMMENT '用户类型',
			  `MOBILE` int(15) DEFAULT NULL COMMENT '手机',
			  `QQ` int(15) DEFAULT NULL COMMENT 'QQ',
			  `ADDRESS` int(150) DEFAULT NULL COMMENT '联系地址',
			  `AGE` int(10) DEFAULT NULL COMMENT '年龄',
			  PRIMARY KEY (`USR_ID`)
			);
		</sql>
	</target>
	
	<!-- 使用.sql 脚本文件 初始化数据库 -->
	<target name="initDB2">
		<sql driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" userid="root" password="test" src="${sqlFile}">
			<classpath refid="classpath" />
		</sql>
	</target>
	
</project>

 

 

        我已经将解释以注释的形式写在源代码中了,如果看过前几篇Ant的文章的话,这个构建文件不难看懂,祝大家能够快速掌握Ant的使用!

Ant实例分析

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
开开心心的过了个年,快快乐乐的过了个情人节!So,继续我技术的学习积累,努力工作吧,也向各位朋
1、“事务响应时间”图显示完成每个事务花费的时间。注意,在下图中,除登录事务以外,事务响应时间
实例要求 实现一个宠物商店,在宠物商店中可以有多种(由用户决定数量)宠物,试表示出此种关系,并
Flat_File=$1 grep -n "<${Flat_File}>" ../env/ifs_sids.cfg | cut -d: -f1 | read lz_begin
源代码下载地址:http://code4app.com/ios/55655def933bf09d328b5141 此源代码从中学到以下四个知识
HBase MapReduce实例分析   跟Hadoop的无缝集成使得使用MapReduce对HBase的数据进行分布式计算非
RMI实例分析 1.远程对象的本地接口声明(RMIOperate.java) · 该类仅仅是一个接口声明,RMI客户机可
volatile关键字相信大家都不陌生,在多线程并发编程里面用的比较多。网上有很多分析,但到底用和不
命令使用 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count
一、Java内存的构成 先上一个官方java document里的图: 由上图可知,整块区域分为Young Generation
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号