ANT+SVN+TOMCAT之自动部署
------------------------------- 再之抄袭篇
抄袭作者:吴钢奇
时间:2012/03/30
MSN:w7374520@hotmail
写这篇文章的时候我在想该不该写,都是抄袭人家的东西觉得挺不得劲的。自己也是第一次写ant的l文件,就发现网
上总是些零散的内容,东拼西凑文档,有没有一遍完整的内容呢?和我一样的新手应该也会这么困惑!想到这里,觉得或许
ant安装包可以对您带来帮助!
一、Ant\svn\tomcat\jdk环境安装,如果你已经安装好了那么直接移步二部分内容,关于Ant的l编写。
安装jdk1.6
1.下载 jdk-6u31-linux-x64.bin
[root@localhost src]# wget acle/otn-pub/java/jdk/6u31-b04/jdk-6u31-linux-x64.bin?AuthParam=1333012774_d0a30d3a
e1469001662a776574ada7e8
[root@localhost src]# chmod +x jdk-6u31-linux-x64.bin
[root@localhost src]# ./jdk-6u25-linux-x64.bin
[root@localhost src]# cp -ar jdk1.6.0_25 /usr/local/jdk
2. 编辑.bash_profile配置文件把jdk加入环境变量中,下面的环境变量很多是把后面需要安装的软件都声明了。在最后加入
如下内容:
[root@localhost src]# vim /root/.bash_profile
JAVA_HOME=/usr/local/jdk
ANT_HOME=/usr/local/ant
SVN_HOME=/usr/local/svn
TOMCAT_HOME=/usr/local/tomcat6
PATH=/usr/local/jdk/bin:/usr/local/jdk/jre/bin:$ANT_HOME/bin:$SVN_HOME/bin:$TOMCAT_HOME/bin:$PATH
CLASSPATH=.:/usr/local/jdk/lib/tools.jar:/usr/local/jdk/lib/dt.jar:/usr/local/jdk/lib:/usr/local/jdk/jre/lib:$
CLASSPATH
export JAVA_HOME ANT_HOME SVN_HOME PATH CLASSPATH
3.安装ant1.8.3
下载源码包
[root@localhost src]# wget mirror.bit.edu/apache//ant/binaries/apache-ant-1.8.
[root@localhost src]# tar zxf apache-ant-1.8.
[root@localhost src]# ll
total 5332
drwxr-xr-x 6 root root 4096 Feb 26 13:29 apache-ant-1.8.3
-rw-r--r-- 1 root root 5442181 Mar 13 12:22 apache-ant-1.8.
[root@localhost src]# cp -ar apache-ant-1.8.3 /usr/local/ant
ANT的环境变量已经在第二步设置好了
测试一下:
[root@localhost src]# which ant
/usr/local/ant/bin/ant
[root@localhost src]# ant -v
Apache Ant(TM) version 1.8.3 compiled on February 26 2012
Trying the default build file: l
Buildfile: l does not exist!
Build failed
[root@localhost src]#
4.安装svnant1.0
下载:/files/documents/906/46267/svnant-1.3.0.zip
解压后将目录lib下svnant.jar svnClientAdapter.jar svnjavahl.jar 三个文件拷到/usr/local/ant/lib下
[root@localhost src]# wget /files/documents/906/46267/svnant-1.3.0.zip
[root@localhost src]# unzip svnant-1.3.0.zip
[root@localhost aa]# cd svnant-1.3.0
[root@localhost svnant-1.3.0]# cp -ar lib/*.jar /usr/local/ant/lib/
5.安装subversion客户端,需要做前期的准备工作。如果想当做SVN服务器使用的话,在下面的基础上加上apache服务就可以了。
装subversion,最好之前装过apr和apr-util,在网站能下到
mirror.bit.edu/apache//apr/apr-1.4.
mirror.bit.edu/apache//apr/apr-util-1.4.
下载apr-1.4.和apr-util-1.4.
1)、安装 apr
在./configure会遇到rm: cannot remove `libtoolT': No such file or directory,直接编辑configure文件,注释或者直接删除$RM "$cfgfile",重新运行./configure –prefix=/usr/local/apr就可以通过
[root@localhost src]# tar zxf apr-1.4.
[root@localhost src]# cd apr-1.4.6
[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.4.6]# make
[root@localhost apr-1.4.6]# make install
2)、安装 apr-util
[root@localhost src]# cd apr-util-1.4.1
[root@localhost apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.4.1]# make
[root@localhost apr-util-1.4.1]# make install
3)、安装sqlite-amalgamation
[root@localhost src]# wget wget /sqlite-amalgamation-3.6.
[root@localhost src]# tar zxf sqlite-amalgamation-3.6.
[root@localhost src]# cd sqlite-3.6.13/
[root@localhost sqlite-3.6.13]# ./configure --prefix=/usr/local/sqlite/
[root@localhost sqlite-3.6.13]# make
[root@localhost sqlite-3.6.13]# make install
4)、安装neon
[root@localhost src]# /neon/neon-0.28.
[root@localhost src]# tar zxf neon-0.28.
[root@localhost src]# cd neon-0.28.4
[root@localhost neon-0.28.4]# make
[root@localhost neon-0.28.4]# make install
5)、安装subversion1.6.17,前期准备完成现在才正在开始安装SVN客户端
[root@localhost src]# wget /downloads/subversion-1.6.
[root@localhost src]# tar zxf subversion-1.6.
[root@localhost src]# cd subversion-1.6.17/
[root@localhost subversion-1.6.17]# ./configure --prefix=/usr/local/svn/ --with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util/ --with-neon=/usr/local/neon --with-sqlite=/usr/local/sqlite
[root@localhost subversion-1.6.17]# make
[root@localhost subversion-1.6.17]# make install
测试SVN客户端安装是否成功
[root@localhost subversion-1.6.17]# svn --version
[root@localhost subversion-1.6.17]# svn co 192.168.0.152:8080/svn
6.安装tomcat6,下载解压缩指定位置即可
[root@localhost src]# wget p/apache-mirror/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.
[root@localhost src]# tar zxf apache-tomcat-6.0.
[root@localhost src]# cp -ar apache-tomcat-6.0.35 /usr/local/tomcat6
[root@localhost src]# cd /usr/local/tomcat6/bin/
[root@localhost bin]# ./startup.sh
二、ANT的xml编写。
下面是一个项目编写实例和实例说明。他能够自动从SVN上下载代码、编译、打包、部署到tomcat、启动tomcat。用一个关系
图描叙我这个项目最为直接:
原理:
在项目运行的第一个任务为default=auto,也就是auto是总任务。在l最后定义auto是依赖的3个任务。按照执行顺序是shutdowntomcat、deploy、startuptomcat。其中shutdowntomcat直接执行完成,第二步执行deploy的时候,发现需要依赖war,war需要依赖complie,complie需要依赖svn,svn需要依赖clear。那么第二步实际上是从clear这个开始走到deploy,第三步startuptomcat没有依赖。直接完成。
其中complie又最为复杂,他需要依赖jar文件,这个jar文件有的是java标准类的,有的是程序人员开发
的。这些jar包在编译的时候都必须参照,不然会发现无法编译成功。Src源代码目录只需要指定具体位置,编译后自动会生成相对应的目录和class文件,我们不需要操心。
========================================================================================================== <?xml version="1.0" encoding="UTF-8"?>
<!-- wugq 声明项目的位置,点代表当前位置
name项目名称为lottery
default是指默认运行第一个task任务为compile这个ID,
file等于一个文件build.properties,这个文件是定义了目录的变量方便修改配置文件 -->
<project basedir="." name="lottery" default="auto">
<!-- all properties are in build.properties -->
<property file="build.properties" />
<!--svn本身需要的运行库为了实现SVN功能特意指定具体的位置给下面SVN使用,
${svnjavahl.jar}以$开头的这些变量都是从build.properties文件读取的 -->
<path id="svnant.lib">
<pathelement location="${svnjavahl.jar}" />
<pathelement location="${svnant.jar}" />
<pathelement location="${svnClientAdapter.jar}" />
</path>
<!--java jdk库这个java运行的lib库,其实只要配置好java环境这个可以省略,目的是编译使用使用,使用时候调用ID即可 -->
<path id="jdk">
<fileset dir="${jdk.lib}">
<include name="**/*.jar" />
</fileset>
</path>
<!--项目的classpath库指的是项目自身开发的包,这些包是编译所依赖的,并且jdk是没有的,使用时候调用ID即可 --> <path id="project.classpath">
<fileset dir="${work.space}/lib">
<include name="*.jar" />
</fileset>
</path>
<!--清理项目任务(干掉下载项目木录、war文件,清除tomcat缓存、删除tomcat原来的部署文件) -->
<target name="clear">
<echo message="===================开始删除原始文件============================" />
<delete dir="${work}/${ant.project.name}.war" />
<delete dir="${work.space}" />
<delete dir="${tomcat.home}/work/Catalina/localhost/${ant.project.name}" />
<delete dir="${tomcat.home}/webapps/${ant.project.name}" />
<delete dir="${tomcat.home}/webapps/${ant.project.name}.war" />
</target>
<!-- 加载SVN的jar包,使他可以调用系统的svn命令 -->
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" />
<!-- 从svn下载项目 -->
<target name="svn" depends="clear">
<echo message="===========从SVN服务器下载源代码,并且建立lottery目录============" />
<mkdir dir="${work.space}"/>
<svn username="wugq" password="wugq868" javahl="false">
<checkout url="${urlRepos}" destPath="${work.space}" />
</svn>
</target>
<!-- target任务的name是compile
echo 显示一条消息告知现在到编译这一步骤了
mkdir 建立编译好class文件存放的目录,这个目录看项目而定,一般是放在WEB-INF/clesses
copy 拷贝配置文件到指定位置,includeemptydirs是否拷贝空目录,默认拷贝。这里为假就是不拷贝,excludes排除哪些内容不拷贝
javac 开始编译java文件到指定位置, includejavaruntime指的是否包含Ant库的路径,默认false。这里是真
source和target个人理解为设定依赖JDK的版本,java虚拟机是1.6就设置我就设置1.6
debug和debuglevel默认debug是关闭的,指定debuglevel值 lines, vars, and source,
src需要编译的java类的位置
classpath需要依赖的库的位置,调用id为project.classpath和jdk -->
<target name="compile" depends="svn" description="======compile project======" >
<echo message="compile==================================> 开始编译java类文件 " />
<mkdir dir="${build.dir}" />
<copy includeemptydirs="false" todir="${build.dir}">
<fileset dir="${fig}" excludes="**/*.launch, **/*.java, config/*.*"/>
</copy>
<javac includejavaruntime"true" debug"true" debuglevel"${debuglevel}" destdir"${build.dir}" source="${source}" target="${target}" encoding="utf-8">
<src path="${java.source}" />
<classpath>
<path refid="project.classpath">
</path>
<path refid="jdk">
</path>
</classpath>
</javac>
</target>
<!-- 对项目进行压缩,打包,并且把依赖的jar把放入WEB-INF下面 -->
<target name="war" depends="compile" description="====== 开始压缩war文件 ======">
<echo message="===================开始压缩文件==============================" />
<!--compress j2ee war file-->
<war destfile="${war.file}" webxml="${web.dir}/l">
<fileset dir="${web.dir}" />
<lib dir="${work.space}/lib" />
</war>
</target>
<!--停止tomcat服务,睡10秒钟使之是否内存 -->
<target name="shutdowntomcat" description="========shutdowntomcat===========">
<exec executable="${tomcat.home}/bin/shutdown.sh" failonerror="false"></exec>
<echo message="================关闭tomcat完成,停止10秒钟,请稍候。。。。=============" />
<sleep seconds="10"/>
</target>
<!--启动tomcat服务-->
<target name="startuptomcat" description="========startuptomcat===========">
<sleep seconds="5"/>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论