ant 实践应用
来源【原创】 / 1443人浏览
时间:2011-09-01 22:20:00
ant 实践应用ant其实并非原生的Linux命令,但它 是一个使用广泛、功能强大的跨平台 构建工具程序,尤其是进行Java开发时,许多开源的Java项目都使用ant作为构建工具。 ant 是apache自由软件基金会的一款开源软件,是java项目推崇的一款编译程序。 在目前业界很多项目中采用ant结合shell脚本编写出效率高效的自动化编译部署脚本。(功能说明:我在工作中所采用的是利用ant将项目文件check out到本地工作目录,然后对其编译,最后发布到发布目录) ant部署步骤(很简单) 1、下载好最新的ant文件,解压或者直接安装即可。 下载地址:http://ant.apache.org/bindownload.cgi 下载apache-ant-1.8.1-bin.tar.gz 解压 [root@localhost~]# cd /usr/local [root@localhost~]# tar -zxvf apache-ant-1.8.1-bin.tar.gz [root@localhost~]# mv apache-ant-1.8.1 ant 2、配置环境变量 ANT_HOME,测试ant运行情况。 [root@localhost~]# vi ~/.bash_profile export ANT_HOME=/usr/local/ant [root@localhost~]# source ~/.bash_profile [root@localhost~]# cd /usr/bin [root@localhost~]# ln -s -f /usr/local/ant/bin/ant 运行ant -version,输出如下内容: [root@localhost ~]# ant -version Apache Ant version 1.8.1 compiled on April 30 2010 ok,ant配置完成。 3、编写build.xml脚本,关键之处。如下为一个build.xml的通用示例配置 build.xml 配置文件需要放到项目的同级路径下 [root@localhost ~]# ls build.xml src WebRoot [root@localhost ~]# cat build.xml##########################################################<?xml version=1.0 encoding=utf-8?> <!-- zhangkai@cairenhui.com 2011.9.14 --> <project name=CRH default=all basedir=.> <property environment=env/> <property name=java.home value=${env.JAVA_HOME}/> <property name=tomcat.home value=${env.TOMCAT_HOME} /> <property name=build.dir value=${basedir}/build/> <property name=src value=${basedir}/src/> <property name=build.webinf value=${basedir}/build/WEB-INF/> <property name=build.weblib value=${basedir}/build/WEB-INF/lib/> <property name=build.metainf value=${basedir}/build/META-INF/> <property name=build.dest value=${basedir}/build/WEB-INF/classes/> <property name=deploye.dest value=/var/Ant/deploy/> <property name=AppName value=CairhEshop/> <property name=ant.home value=${env.ANT_HOME} /> <property name=urlRepos value=http://192.168.1.212/svn/Cairh_Eshop/Test_Release_Source/${AppName} /> <property name=work.space value=/var/Ant/SourceCode/${AppName} /> <!--编译java 需要的classpath库 --> <path id=compile.classpath> <fileset dir=${build.weblib} includes=*.jar /> <fileset dir=${tomcat.home}/lib includes=*.jar /> <fileset dir=${java.home}/lib includes=*.jar /> </path> <!--antsvn 需要的运行库 --> <!-- 这里要下载 svnant的依赖包共三个 /usr/local/ant/svnant/ 目录下,可以自定义存放目录--> <path id=svnant.lib> <fileset dir=${ant.home}/svnant> <include name=*.jar /> </fileset> </path> <!-- load the svn task --> <taskdef name=svn classname=org.tigris.subversion.svnant.SvnTask classpathref=svnant.lib /> <!--svn check out program--> <target name=svn> <mkdir dir=${work.space}/> <svn username=zhangkai password=password javahl=false> <checkout url=${urlRepos} destPath=${work.space} /> </svn> </target> <!--项目编译初始化临时目录 --> <target name=init> <tstamp/> <mkdir dir=${build.dir}/> <mkdir dir=${build.webinf}/> <mkdir dir=${build.weblib}/> <mkdir dir=${build.metainf}/> <mkdir dir=${build.dest}/> <copy todir=${build.dir}> <fileset dir=${basedir}/WebRoot> <include name=**/> </fileset> </copy> <copy todir=${build.dest}> <fileset dir=${basedir}/config> <include name=**/> </fileset> </copy> </target> <!--开始编译项目 --> <target name=compile depends=init> <javac srcdir=${src} destdir=${build.dest} includeantruntime=on> <classpath refid=compile.classpath/> </javac> </target> <!--发布编译完成的项目 --> <target name=deploy depends=compile> <property name=deploy.dir value=${deploye.dest}/${AppName}/ROOT/> <property name=deploy.back.dir value=${deploye.dest}/${AppName}/${DSTAMP}${TSTAMP}/> <copy todir=${build.dest}> <fileset dir=${src}> <include name=**/*.xml/> </fileset> </copy> <copy todir=${deploy.dir}> <fileset dir=${build.dir}> <include name=**/> </fileset> </copy> <copy todir=${deploy.back.dir}> <fileset dir=${build.dir}> <include name=**/> </fileset> </copy> </target> <!--清除编译项目时创建的临时文件夹--> <target name=clean depends=init> <delete dir=${build.dir}/> </target> <!--按顺序检出、编译、发布、清理--> <target name=all depends=svn,deploy,clean description=deploys the project to tomcat and cleans the build files./></project>########################################################## 2011.9.13补充, 实践应用脚本2011.9.14 修改调整[root@test214 Ant]# cat Ant_CairhEshop.sh #!/bin/bash# this script is ant and rsync# created by zhangkai @ cairenhui.com 2011.09.14###################### section ant ########################echo -n Do you want to ant compie ....[Y/N]?read var1case $var1 in[yY])cd ./SourceCode/CairhEshop ant;;[nN]) ;;*) ;;esac######################## section rsync #####################echo -n Do you want rsync ....[Y/N]?read var2case $var2 in[yY] )rsync -vzrtopgl --progress --exclude=*.svn --exclude=*.bak --exclude=uploader-config.properties --password-file=/etc/rsyncd.pwd /var/Ant/deploy/CairhEshop/ROOT/* sysman@192.168.1.215::CairhEshop/;;[nN] ) exit 0 ;;* ) echo Input error ! Pleses enter Y/N ;;esacexit 0
感谢博主分享,打赏一杯咖啡^_^