ant 实践应用
                    
                        来源【原创】 / 2168人浏览 
                        时间: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                            
                    
                    
                    
                    
                        
                                              
                            
                            感谢博主分享,打赏一杯咖啡^_^