这段Ant脚本主要作用就是:自动从SVN库拉最新的代码,编译、并自动部署到测试服务器。
其中用到了“antsvn”,有3个jar包需要配置进去。
- <?xmlversion="1.0"encoding="UTF-8"?>
- <projectbasedir="."name="smmail"default="auto">
- <!-- all properties are in build.properties -->
- <propertyfile="build.properties"/>
- <!--svn本身需要的运行库 -->
- <pathid="svnant.lib">
- <pathelementlocation="${svnjavahl.jar}"/>
- <pathelementlocation="${svnant.jar}"/>
- <pathelementlocation="${svnClientAdapter.jar}"/>
- </path>
- <!--java EE 1.6 库 -->
- <pathid="javaEE1.6">
- <filesetdir="${javaEE1.6.lib}">
- <includename="**/*.jar"/>
- </fileset>
- </path>
- <!--项目的classpath库 -->
- <pathid="project.classpath">
- <pathelementlocation="${build.dir}"/>
- <filesetdir="${lib.dir}"/>
- </path>
- <!--清理项目任务(干掉下载目录,tomcat原来的部署文件) -->
- <targetname="clear">
- <deletedir="${work.space}"/>
- <deletedir="${tomcat.home}/work/Catalina/localhost/${ant.project.name}"/>
- <deletedir="${tomcat.home}/webapps/${ant.project.name}"/>
- <deletedir="${tomcat.home}/webapps/${ant.project.name}.war"/>
- </target>
- <!-- load the svn task -->
- <taskdefname="svn"classname="org.tigris.subversion.svnant.SvnTask"classpathref="svnant.lib"/>
- <!--svn同步任务-->
- <targetname="svn"depends="clear">
- <mkdirdir="${work.space}"/>
- <svnusername="SongWei"password="Song"javahl="false">
- <checkouturl="${urlRepos}"destPath="${work.space}"/>
- </svn>
- </target>
- <!--编译-->
- <targetname="compile"depends="svn"description="======compile project======">
- <echomessage="compile==========>${ant.project.name}: ${ant.file}"/>
- <mkdirdir="${build.dir}"/>
- <copyincludeemptydirs="false"todir="${build.dir}">
- <filesetdir="${java.source}"excludes="**/*.launch, **/*.java, config/*.*"/>
- </copy>
- <copyincludeemptydirs="false"todir="${build.dir}">
- <filesetdir="${java.config}"excludes="**/*.launch, **/*.java"/>
- </copy>
- <javacincludejavaruntime="true"debug="true"debuglevel="${debuglevel}"destdir="${build.dir}"
- source="${source}"target="${target}"encoding="utf-8">
- <srcpath="${java.source}"/>
- <excludename="config/"/>
- <classpath>
- <pathrefid="project.classpath">
- </path>
- <pathrefid="javaEE1.6">
- </path>
- </classpath>
- </javac>
- <javacdebug="true"debuglevel="${debuglevel}"destdir="${build.dir}"source="${source}"target="${target}"encoding="utf-8">
- <srcpath="${java.config}"/>
- </javac>
- </target>
- <!--压缩,打包-->
- <targetname="war"depends="compile"description="======compress j2ee war file======">
- <mkdirdir="${dist.dir}"/>
- <!--compress j2ee war file-->
- <wardestfile="${war.file}"webxml="${web.dir}/WEB-INF/web.xml">
- <filesetdir="${web.dir}"/>
- <classesdir="${build.dir}"/>
- <libdir="${lib.dir}"/>
- </war>
- </target>
- <!--shutdowntomcat-->
- <targetname="shutdowntomcat"description="========shutdowntomcat===========">
- <execexecutable="${tomcat.home}/bin/shutdown.sh"failonerror="false"></exec>
- <sleepseconds="10"/>
- </target>
- <!--startuptomcat-->
- <targetname="startuptomcat"description="========startuptomcat===========">
- <sleepseconds="5"/>
- <execexecutable="${tomcat.home}/bin/startup.sh"failonerror="false"></exec>
- </target>
- <!--部署到tomcat下面克-->
- <targetname="deploy"depends="war">
- <copyfile="${war.file}"todir="${tomcat.home}/webapps"/>
- </target>
- <!--全自动无敌部署,启动关闭tomcat-->
- <targetname="auto"depends="shutdowntomcat,deploy,startuptomcat">
- <echomessage="DONE!!!!"/>
- </target>
- </project>
下面是build.xml指定的properties文件,需要和build.xml放在同一个目录下面
需要指定work.space(svn拉下来代码的存放,已经编译,打包用的临时目录)
tomcat.home(tomcat服务器的根目录,如果是其他服务器,需要修改对应项)
===============================================
build.version=1.0.0
svnant.jar=/usr/java/svn/svnant.jar
svnClientAdapter.jar=/usr/java/svn/svnClientAdapter.jar
svnjavahl.jar=/usr/java/svn/svnjavahl.jar
javaEE1.6.lib=/usr/javaEE-1.6
debuglevel=source,lines
target=1.6
source=1.6
work.space=/home/gmail/workspace
dist.dir=${work.space}
build.dir=${work.space}/WebRoot/WEB-INF/classes
lib.dir=${work.space}/WebRoot/WEB-INF/lib
java.source=${work.space}/src
java.config=${work.space}/src/config
web.dir=${work.space}/WebRoot
resource.dir=${work.space}/resources
tomcat.home=/home/gmail/tomcat6
war.file=${dist.dir}/${ant.project.name}.war
urlRepos=svn://192.168.1.188/product/SMMAIL/Develop