强势推荐ANT小蚂蚁

2012-08-01 433 0

之前就知道ANT这个小蚂蚁,一直没有用过,这两天,下了点功夫,写了一个ANT的脚本。功能还行,可以完成同步svn代码、编译代码、打包代码、上传、部署的功能。

直接上干货,看代码。

[code]

#JDK home

jdk.home=/opt/Java/jdk1.6.0_33

#webapp name

webapp.name=pmeapp

project.name=pmeapp

#svn

svn.url=http://127.0.0.1:9344/svn/pmeapp/trunk

svn.uname=dapeng

svn.pwd=dapengpwd

#war

war.exclude=

war.exclude.classes=

#ftp

ftp.server=127.0.0.1

ftp.password=dapengpwd

ftp.userid=dapeng

ftp.path=/opt/ftp/

#ssh

ssh.host=127.0.0.1

ssh.path=/opt/tomcat6/webapps

ssh.pwd=dapengpwd

ssh.uname=dapeng

#ssh

ssh.path.webapp=/opt/tomcat6/webapps

ssh.server.bin=/opt/tomcat6/bin

ssh.cmd.sshClean=rm -rf /opt/tomcat6/webapps/${webapp.name}/

ssh.server.start=/opt/tomcat6/bin/startup.sh

ssh.server.stop=/opt/tomcat6/bin/shutdown.sh

[/code]

另外一个是关键中的核心

[sourcecode]

<project basedir=’.’ default=’usage’ name=’${project.name}’>

<!– =================================================================== –>

<!– 下句是import进ant属性配置文件,properties文件里存放基本的配置变量. –>

<!– 该变量可以在build.xml中直接引用. –>

<!– =================================================================== –>

<property file=’ant.properties’/>

<!– =================================================================== –>

<!– 以下的几个属性是系统自带的,初始了tstamp之后,它们就有值了 –>

<!– ${DSTAMP} ${TSTAMP} ${TODAY} –>

<tstamp/>

<property name=’war.name’ value=’${webapp.name}’ />

<!– =================================================================== –>

<!– Init –>

<!– =================================================================== –>

<target name=’init’>

<echo message=’————————————-‘/>

<echo message=’start ant build ${project.name} – ${DSTAMP}${TSTAMP}’/>

<property name=’debug’ value=’off’/>

<property name=’optimize’ value=’on’/>

<property name=’deprecation’ value=’on’/>

<!– java源文件路径 –>

<property name=’src.dir’ value=’${basedir}/src’/>

<!– jar包路径 –>

<property name=’lib.dir’ value=’${basedir}/WebRoot/WEB-INF/lib’/>

<!– webapp路径 –>

<property name=’webapp.dir’ value=’${basedir}/WebRoot’/>

<!– 准备源文件路径 –>

<property name=’build.src’ value=’${basedir}/AntBuild/build’/>

<!– 编译源文件路径 –>

<property name=’build.dest’ value=’${basedir}/AntBuild/bin’/>

<!– 准备webapp文件路径 –>

<property name=’buildwar.dest’ value=’${basedir}/AntBuild/warsrc’/>

<!– 打包war文件路径 –>

<property name=’war.dest’ value=’${basedir}/AntBuild/war’/>

<!– jre lib路径 –>

<property name=’jre.lib’ value=’${jdk.home}/jre/lib’/>

<!– 引用svn task文件,使用svn任务可以使用–>

<typedef resource=’org/tigris/subversion/svnant/svnantlib.xml’ />

<!– 设置svn相关属性 –>

<svnSetting id=’svn.setting’ svnkit=’true’ username=’${svn.uname}’ password=’${svn.pwd}’ javahl=’false’ />

<!– classpath –>

<path id=’classpath’>

<!–web.lib–>

<fileset dir=’e:/lib’>

<include name=’/*.jar’/>

</fileset>

<fileset dir=’${jre.lib}’>

<include name=’
/.jar’/>

</fileset>

<fileset dir=’${lib.dir}’>

<include name=’**/
.jar’/>

</fileset>

<!–<pathelement location=’lib/‘/>–>

</path>

</target>

<!– =================================================================== –>

<!– checkout –>

<!– =================================================================== –>

<target name=’checkout’ depends=’init’>

<echo message=’————————————-‘/>

<echo message=’start checkout ${project.name} – ${DSTAMP}${TSTAMP}’/>

<svn refid=’svn.setting’>

<checkout url=’${svn.url}’ revision=’HEAD’ destPath=’.’ />

</svn>

</target>

<!– =================================================================== –>

<!– 编译源文件–>

<!– =================================================================== –>

<target name=’build’ depends=’checkout’>

<echo message=’————————————-‘/>

<echo message=’start build ${project.name} – ${DSTAMP}${TSTAMP}’/>

<mkdir dir=’${buildwar.dest}/WEB-INF/classes’/>

<delete>

<fileset dir=’${buildwar.dest}/WEB-INF/classes’ includes=’/.‘/>

</delete>

<javac srcdir=’${src.dir}’ destdir=’${buildwar.dest}/WEB-INF/classes’ debug=’${debug}’ optimize=’${optimize}’ includeantruntime=’on’>

<classpath refid=’classpath’/>

</javac>

<copy todir=’${buildwar.dest}/WEB-INF/classes’>

<fileset dir=’${src.dir}’>

<include name=’
/.‘/>

<exclude name=’/*.java’/>

</fileset>

</copy>

</target>

<!– =================================================================== –>

<!– 打war包–>

<!– =================================================================== –>

<target name=’war’ depends=’build’>

<echo message=’————————————-‘/>

<echo message=’start war ${project.name} – ${DSTAMP}${TSTAMP}’/>

<delete>

<fileset dir=’.’ includes=’
/*.war’/>

</delete>

<!–needxmlfile 设为false才不会报错 web.xml不存在 ant会报错–>

<war destfile=’${war.name}.war’ needxmlfile=’false’>

<!– <lib dir=’${basedir}/WebRoot/WEB-INF/lib’/> –>

<classes dir=’${buildwar.dest}/WEB-INF/classes’ excludes=’${war.exclude.classes}’/>

<fileset dir=’${webapp.dir}’ excludes=’${war.exclude}’/>

</war>

</target>

<!– =================================================================== –>

上传本地文件到远程服务器,执行远程命令

<!– =================================================================== –>

<target name=’ssh’ depends=’war’>

<echo message=’————————————-‘/>

<echo message=’start ssh ${project.name} – ${DSTAMP}${TSTAMP}’/>

<!–上传–>

<scp file=’${basedir}/${war.name}.war’ todir=’${ssh.uname}:${ssh.pwd}@${ssh.host}:${ssh.path}’ trust=’true’/>

</target>

<!– =================================================================== –>

<!– 停止服务器–>

<!– =================================================================== –>

<target name=’stop’ depends=’ssh’>

<echo message=’————————————-‘/>

<echo message=’stop server – ${DSTAMP}${TSTAMP}’/>

<sshexec host=’${ssh.host}’ username=’${ssh.uname}’ password=’${ssh.pwd}’ port=’22’ trust=’true’ verbose=’true’ command=’${ssh.server.stop}’/>

</target>

<!– =================================================================== –>

<!– 启动服务器–>

<!– =================================================================== –>

<target name=’start’ depends=’stop’>

<echo message=’————————————-‘/>

<echo message=’start server – ${DSTAMP}${TSTAMP}’/>

<sshexec host=’${ssh.host}’ username=’${ssh.uname}’ password=’${ssh.pwd}’ port=’22’ trust=’true’ verbose=’true’ command=’${ssh.server.start}’/>

</target>

<!– =================================================================== –>

<!– 清除临时文件–>

<!– =================================================================== –>

<target name=’clean’ depends=’init’>

<echo message=’————————————-‘/>

<echo message=’start clean ${project.name} – ${DSTAMP}${TSTAMP}’/>

<delete includeemptydirs=’true’>

<fileset dir=’${basedir}’ excludes=’ant.properties,build.xml’/>

</delete>

</target>

</project>

[/sourcecode]

注释写的还算详细哈!

ANT的配置网上一大堆,google一下就知道了(有时宁愿用有道,也不愿意用百度)。

想起之前svn下载、编译、上传、部署全部手动操作,唉!

现在,一个命令搞定,好舒服!

构建工具,还有另外一种选择,使用MAVEN,MAVEN更是一种更优秀的构建工具,也推荐学习一下的。

多学习一种是好事哈!不能总用过myeclipse就行吧!目前我的系统采用的是linuxdeepin,基本都能满足我的日常使用了,下次有机会再介绍我的linux经历史了。

相关文章

15年来的手艺之路:手艺人赵鹏的自述
纪念 Google 25 周年:从搜索引擎到科技巨头的演变之路
1小时编写一个支持七牛上传的 markdown 客户端3(打包发布篇)
1小时编写一个支持七牛上传的 markdown 客户端2(代码优化篇)
1小时编写一个支持七牛上传的 markdown 客户端1(技术实现篇)
从 wordpress 转移到 hexo

Leave a Reply