CentOS系统下Apache Ant自动从SVN获取代码并通过Tomcat集群发布工程
2014-11-03 10:37
816 查看
关于利用Ant自动从SVN服务器获取代码并通过Tomcat服务器集群发布工程的过程,涉及到Shell编程、Ant服务器配置、SVN服务器配置、Apache httpd服务器、Tomcat集群服务器的配置,相关配置请了解其他博客。
一、相关服务器配置说明:
1、Apache httpd与Tomcat服务器集群配置:/article/8483385.html;
2、Ant服务器配置:/article/8483384.html;
3、SVN服务器配置:/article/8483392.html;
4、Shell编程请参考相关的书籍;
二、关于Ant与Svn服务器的安装目录及其准备工作:
1、Ant与Svn的安装目录:/usr/local;
2、准备工作:启动SVN服务器,关闭防火墙,准备好相关的ant与svn的联合发布的jar文件;
三、操作过程:
1、在ant目录下新建目录并赋予执行权限:
[root@localhost ant]# mkdir ant-svn
[root@localhost ant]# chmod u+x ant-svn
2、svn服务器下一共两个项目:mvc与test,如下图所示:
3、在ant-svn目录下建立Ant发布所需的build-mvc.xml与build-mvc.properties文件:
build-mvc.properties内容:
[html]
view plaincopyprint?
build.version=1.0.0 svnant.jar=/usr/local/ant/lib/svnant.jar svnClientAdapter.jar=/usr/local/ant/lib/svnClientAdapter.jar svnjavahl.jar=/usr/local/ant/lib/svnjavahl.jar java.lib=/usr/java/jdk1.6.0_30/lib debuglevel=source,lines target=1.6 source=1.6 workspace=/usr/local/ant/ant-svn/workspace dist=${workspace} build=${workspace}/WebContent/WEB-INF/classes lib=${workspace}/WebContent/WEB-INF/lib src=${workspace}/src web=${workspace}/WebContent tomcat1.home=/usr/local/tomcat1 tomcat2.home=/usr/local/tomcat2 warfile=${dist}/${ant.project.name}.war svnUrl=svn://192.168.31.132/davesvn/mvc svnUser=dave svnPasswd=davepwd
文件重要语句说明:
3-6行:主要表示的所需要的jar包,包括java的类库;
8-10行:是配置ant编译所需要的资源级别和debug级别;
12行:定义临时存放发布工程的文件目录;
15-19行:建立发布工程的class、lib、src与web主目录;
20-21行:定义web服务器集群配置下的tomcat节点路径;
23行:定义发布工程的war包名称;
25-27行:定义用于抓取svn服务器工程代码的svn服务路径,以及操作svn的用户名及其密码;
build-mvc.xml内容:
[html]
view plaincopyprint?
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." name="mvc" default="auto">
<property file="build-mvc.properties" />
<path id="svnant.lib">
<pathelement location="${svnjavahl.jar}" />
<pathelement location="${svnant.jar}" />
<pathelement location="${svnClientAdapter.jar}" />
</path>
<path id="java6">
<fileset dir="${java.lib}">
<include name="**/*.jar" />
</fileset>
</path>
<path id="project.classpath">
<pathelement location="${build}" />
<fileset dir="${lib}" />
</path>
<target name="clear">
<delete dir="${workspace}" />
<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>
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" />
<target name="svn" depends="clear">
<mkdir dir="${workspace}"/>
<svn username="${svnUser}" password="${svnPasswd}" javahl="false">
<checkout url="${svnUrl}" destPath="${workspace}" />
</svn>
</target>
<target name="compile" depends="svn" description="======compile project======">
<mkdir dir="${build}" />
<copy includeemptydirs="false" todir="${build}">
<fileset dir="${src}" excludes="**/*.java"/>
</copy>
<javac includejavaruntime="true" debug="true" debuglevel="${debuglevel}" destdir="${build}" source="${source}" target="${target}" encoding="utf-8">
<src path="${src}" />
<classpath>
<path refid="project.classpath">
</path>
<path refid="java6">
</path>
</classpath>
</javac>
</target>
<target name="war" depends="compile" description="======compress j2ee war file======">
<mkdir dir="${dist}" />
<war destfile="${warfile}" webxml="${web}/WEB-INF/web.xml">
<fileset dir="${web}">
<include name="**/*.jsp"/>
<include name="**/*-servlet.xml"/>
<include name="**/applicationContext.xml"/>
</fileset>
<lib dir ="${lib}"/>
<classes dir ="${build}"/>
</war>
</target>
<target name="shutdowntomcat" description="========shutdowntomcat===========">
<exec executable="${tomcat1.home}/bin/shutdown.sh" failonerror="false"></exec>
<sleep seconds="10"/>
<exec executable="${tomcat2.home}/bin/shutdown.sh" failonerror="false"></exec>
<sleep seconds="10"/>
<echo message="it is secuessful of tomcat's shutdownning !" />
</target>
<target name="startuptomcat" description="========startuptomcat===========">
<sleep seconds="5"/>
<exec executable="${tomcat1.home}/bin/startup.sh" failonerror="false"></exec>
<sleep seconds="5"/>
<exec executable="${tomcat2.home}/bin/startup.sh" failonerror="false"></exec>
<echo message="it is secuessful of tomcat's startuping !" />
</target>
<target name="deploy" depends="war">
<copy file="${warfile}" todir="${tomcat1.home}/webapps" />
<copy file="${warfile}" todir="${tomcat2.home}/webapps" />
<echo message="it is secuessful of project deploy !" />
</target>
<target name="auto" depends="shutdowntomcat,deploy,startuptomcat">
<echo message="DONE!!!!" />
</target>
</project>
文件重要语句说明:
3行:定义project的相关信息,包括名称,默认处理的target等信息;
4行:定义ANT引用的属性文件;
6行:定义了Svn所需要用到的jar包位置;
12行:定义java类库文件lib;
17行:定义编译所需要的文件目录及其使用的lib包;
22行:定义清理相关文件目录的target;
29行:定义svn抽取代码的相关配置任务;
31行:定义svn抽取代码的target;
38行:定义编译的target;
55行:根据相关配置生成发布的war;
68行:定义关闭tomcat集群中的节点target,从代码中可以看出,定义了两个tomcat节点;
76行:定义启动tomcat集群中的节点target,从代码中可以看出,定义了两个tomcat节点;
84行:定义发布工程的的target;
90行:定义Ant执行工作的开始target;
注:相关标签的含义请查阅其他的相关资料。
4、在Ant-Svn目录下建立一个临时存放编译和发布工作的workspace目录:
[root@localhost ant-svn]# mkdir workspace
[root@localhost ant-svn]# chmod u+x workspace
5、建立批量执行发布命令的Shell程序文件batch-ant.sh:
[html]
view plaincopyprint?
#!/bin/sh echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log echo "============================ batch-ant-exe =========================" >> /usr/local/ant/ant-svn/res.log echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log date >> /usr/local/ant/ant-svn/res.log echo "============================ init the env start =====================" >> /usr/local/ant/ant-svn/res.log export JAVA_HOME=/usr/java/jdk1.6.0_30 export JAVA_BIN=/usr/java/jdk1.6.0_30/bin export ANT_HOME=/usr/local/ant export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN ANT_HOME PATH CLASSPATH echo "============================ init the env end ======================" >> /usr/local/ant/ant-svn/res.log echo "============================ close apache the env start =============" >> /usr/local/ant/ant-svn/res.log /usr/local/apache/bin/apachectl -k stop echo "============================ close apache the env end =============" >> /usr/local/ant/ant-svn/res.log date >> /usr/local/ant/ant-svn/res.log echo "============================ execute the ant cmd start =============" >> /usr/local/ant/ant-svn/res.log cd /usr/local/ant/ant-svn ant -buildfile build-mvc.xml echo &date #sleep 1m #echo &date #ant -buildfile build-test.xml #echo "=========================== execute the ant cmd end ==== =========" >> /usr/local/ant/ant-svn/res.log #date >> /usr/local/ant/ant-svn/res.log echo "============================ open apache the env start ==============" >> /usr/local/ant/ant-svn/res.log /usr/local/apache/bin/apachectl -k start echo "============================ open apache the env end ==============" >> /usr/local/ant/ant-svn/res.log
文件重要语句说明:
9-16行:引入相关的环境变量,包括java、ant;
20行:关闭apache tomcat集群服务器;
26行:ant命令,执行build-mvc.xml文件内容;
35行:启动apache tomcat集群服务器;
注:shell编程请参阅其他资料。
6、建立监控结果文件:res.log
[root@localhost ant-svn]# touch res.log
7、执行批处理Shell脚本batch-ant.sh文件:
[root@localhost ant-svn]# sh batch-ant.sh
显示结果:
[html]
view plaincopyprint?
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
httpd (no pid file) not running
Buildfile: /usr/local/ant/ant-svn/build-mvc.xml
shutdowntomcat:
[exec] Feb 19, 2014 7:04:09 AM org.apache.catalina.startup.Catalina stopServer
[exec] SEVERE: Catalina.stop:
[exec] java.net.ConnectException: Connection refused
[exec] at java.net.PlainSocketImpl.socketConnect(Native Method)
[exec] at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
[exec] at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
[exec] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
[exec] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
[exec] at java.net.Socket.connect(Socket.java:529)
[exec] at java.net.Socket.connect(Socket.java:478)
[exec] at java.net.Socket.<init>(Socket.java:375)
[exec] at java.net.Socket.<init>(Socket.java:189)
[exec] at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[exec] at java.lang.reflect.Method.invoke(Method.java:597)
[exec] at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)
[exec] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)
[exec] Feb 19, 2014 7:04:20 AM org.apache.catalina.startup.Catalina stopServer
[exec] SEVERE: Catalina.stop:
[exec] java.net.ConnectException: Connection refused
[exec] at java.net.PlainSocketImpl.socketConnect(Native Method)
[exec] at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
[exec] at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
[exec] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
[exec] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
[exec] at java.net.Socket.connect(Socket.java:529)
[exec] at java.net.Socket.connect(Socket.java:478)
[exec] at java.net.Socket.<init>(Socket.java:375)
[exec] at java.net.Socket.<init>(Socket.java:189)
[exec] at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[exec] at java.lang.reflect.Method.invoke(Method.java:597)
[exec] at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)
[exec] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)
[echo] it is secuessful of tomcat's shutdownning !
clear:
[delete] Deleting directory /usr/local/ant/ant-svn/workspace
svn:
[mkdir] Created dir: /usr/local/ant/ant-svn/workspace
[svn] Deprecated attribute 'username'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.
[svn] Deprecated attribute 'password'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.
[svn] Deprecated attribute 'javahl'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.
compile:
[mkdir] Created dir: /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes
[javac] /usr/local/ant/ant-svn/build-mvc.xml:44: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 4 source files to /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes
war:
[war] Building war: /usr/local/ant/ant-svn/workspace/mvc.war
deploy:
[copy] Copying 1 file to /usr/local/tomcat1/webapps
[copy] Copying 1 file to /usr/local/tomcat2/webapps
[echo] it is secuessful of project deploy !
startuptomcat:
[echo] it is secuessful of tomcat's startuping !
auto:
[echo] DONE!!!!
BUILD SUCCESSFUL
Total time: 48 seconds
Wed Feb 19 07:04:52 PST 2014
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
文件重要语句说明:
1-2行:执行ant文件的关闭apache tomcat 集群服务器配置的结果;
3行:执行ant命令;
5行:执行名为shutdowntomcat的target标签,关闭tomcat服务,包括tomcat1与tomcat2两个节点服务;
8、27行:表示在关闭tomcat服务时,原本tomcat服务根本没有打开,所以在关闭时提示连接被拒绝;
46行:执行名为clear的target标签;
49行:执行名为svn的target标签,从svn服务器获取相关项目的代码;
55行:执行名为compile的target标签,编译工程;
60行:执行名为war的target标签,生成发布的war包;
63行:执行名为deploy的target标签,发布工程;
68行:执行名为startuptomcat的target标签,启动tomcat服务,包括tomcat1与tomcat2两个节点服务;
71行:执行名为auto的target标签,实际上只是一个执行入口;
74行:表示执行ant命令成功;
78行:执行ant文件的启动apache tomcat 集群服务器配置的结果;
8、在浏览器中输入:http://192.168.31.132/mvc/index.jsp,结果如下图所示:
从图中可以看出发布成功。
注:1、以上过程在Centos 6.3所属32位系统下调试通过;
2、shell脚本中没有处理异常。
/article/8483386.html
一、相关服务器配置说明:
1、Apache httpd与Tomcat服务器集群配置:/article/8483385.html;
2、Ant服务器配置:/article/8483384.html;
3、SVN服务器配置:/article/8483392.html;
4、Shell编程请参考相关的书籍;
二、关于Ant与Svn服务器的安装目录及其准备工作:
1、Ant与Svn的安装目录:/usr/local;
2、准备工作:启动SVN服务器,关闭防火墙,准备好相关的ant与svn的联合发布的jar文件;
三、操作过程:
1、在ant目录下新建目录并赋予执行权限:
[root@localhost ant]# mkdir ant-svn
[root@localhost ant]# chmod u+x ant-svn
2、svn服务器下一共两个项目:mvc与test,如下图所示:
3、在ant-svn目录下建立Ant发布所需的build-mvc.xml与build-mvc.properties文件:
build-mvc.properties内容:
[html]
view plaincopyprint?
build.version=1.0.0 svnant.jar=/usr/local/ant/lib/svnant.jar svnClientAdapter.jar=/usr/local/ant/lib/svnClientAdapter.jar svnjavahl.jar=/usr/local/ant/lib/svnjavahl.jar java.lib=/usr/java/jdk1.6.0_30/lib debuglevel=source,lines target=1.6 source=1.6 workspace=/usr/local/ant/ant-svn/workspace dist=${workspace} build=${workspace}/WebContent/WEB-INF/classes lib=${workspace}/WebContent/WEB-INF/lib src=${workspace}/src web=${workspace}/WebContent tomcat1.home=/usr/local/tomcat1 tomcat2.home=/usr/local/tomcat2 warfile=${dist}/${ant.project.name}.war svnUrl=svn://192.168.31.132/davesvn/mvc svnUser=dave svnPasswd=davepwd
build.version=1.0.0 svnant.jar=/usr/local/ant/lib/svnant.jar svnClientAdapter.jar=/usr/local/ant/lib/svnClientAdapter.jar svnjavahl.jar=/usr/local/ant/lib/svnjavahl.jar java.lib=/usr/java/jdk1.6.0_30/lib debuglevel=source,lines target=1.6 source=1.6 workspace=/usr/local/ant/ant-svn/workspace dist=${workspace} build=${workspace}/WebContent/WEB-INF/classes lib=${workspace}/WebContent/WEB-INF/lib src=${workspace}/src web=${workspace}/WebContent tomcat1.home=/usr/local/tomcat1 tomcat2.home=/usr/local/tomcat2 warfile=${dist}/${ant.project.name}.war svnUrl=svn://192.168.31.132/davesvn/mvc svnUser=dave svnPasswd=davepwd
文件重要语句说明:
3-6行:主要表示的所需要的jar包,包括java的类库;
8-10行:是配置ant编译所需要的资源级别和debug级别;
12行:定义临时存放发布工程的文件目录;
15-19行:建立发布工程的class、lib、src与web主目录;
20-21行:定义web服务器集群配置下的tomcat节点路径;
23行:定义发布工程的war包名称;
25-27行:定义用于抓取svn服务器工程代码的svn服务路径,以及操作svn的用户名及其密码;
build-mvc.xml内容:
[html]
view plaincopyprint?
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." name="mvc" default="auto">
<property file="build-mvc.properties" />
<path id="svnant.lib">
<pathelement location="${svnjavahl.jar}" />
<pathelement location="${svnant.jar}" />
<pathelement location="${svnClientAdapter.jar}" />
</path>
<path id="java6">
<fileset dir="${java.lib}">
<include name="**/*.jar" />
</fileset>
</path>
<path id="project.classpath">
<pathelement location="${build}" />
<fileset dir="${lib}" />
</path>
<target name="clear">
<delete dir="${workspace}" />
<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>
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" />
<target name="svn" depends="clear">
<mkdir dir="${workspace}"/>
<svn username="${svnUser}" password="${svnPasswd}" javahl="false">
<checkout url="${svnUrl}" destPath="${workspace}" />
</svn>
</target>
<target name="compile" depends="svn" description="======compile project======">
<mkdir dir="${build}" />
<copy includeemptydirs="false" todir="${build}">
<fileset dir="${src}" excludes="**/*.java"/>
</copy>
<javac includejavaruntime="true" debug="true" debuglevel="${debuglevel}" destdir="${build}" source="${source}" target="${target}" encoding="utf-8">
<src path="${src}" />
<classpath>
<path refid="project.classpath">
</path>
<path refid="java6">
</path>
</classpath>
</javac>
</target>
<target name="war" depends="compile" description="======compress j2ee war file======">
<mkdir dir="${dist}" />
<war destfile="${warfile}" webxml="${web}/WEB-INF/web.xml">
<fileset dir="${web}">
<include name="**/*.jsp"/>
<include name="**/*-servlet.xml"/>
<include name="**/applicationContext.xml"/>
</fileset>
<lib dir ="${lib}"/>
<classes dir ="${build}"/>
</war>
</target>
<target name="shutdowntomcat" description="========shutdowntomcat===========">
<exec executable="${tomcat1.home}/bin/shutdown.sh" failonerror="false"></exec>
<sleep seconds="10"/>
<exec executable="${tomcat2.home}/bin/shutdown.sh" failonerror="false"></exec>
<sleep seconds="10"/>
<echo message="it is secuessful of tomcat's shutdownning !" />
</target>
<target name="startuptomcat" description="========startuptomcat===========">
<sleep seconds="5"/>
<exec executable="${tomcat1.home}/bin/startup.sh" failonerror="false"></exec>
<sleep seconds="5"/>
<exec executable="${tomcat2.home}/bin/startup.sh" failonerror="false"></exec>
<echo message="it is secuessful of tomcat's startuping !" />
</target>
<target name="deploy" depends="war">
<copy file="${warfile}" todir="${tomcat1.home}/webapps" />
<copy file="${warfile}" todir="${tomcat2.home}/webapps" />
<echo message="it is secuessful of project deploy !" />
</target>
<target name="auto" depends="shutdowntomcat,deploy,startuptomcat">
<echo message="DONE!!!!" />
</target>
</project>
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." name="mvc" default="auto"> <property file="build-mvc.properties" /> <path id="svnant.lib"> <pathelement location="${svnjavahl.jar}" /> <pathelement location="${svnant.jar}" /> <pathelement location="${svnClientAdapter.jar}" /> </path> <path id="java6"> <fileset dir="${java.lib}"> <include name="**/*.jar" /> </fileset> </path> <path id="project.classpath"> <pathelement location="${build}" /> <fileset dir="${lib}" /> </path> <target name="clear"> <delete dir="${workspace}" /> <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> <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" classpathref="svnant.lib" /> <target name="svn" depends="clear"> <mkdir dir="${workspace}"/> <svn username="${svnUser}" password="${svnPasswd}" javahl="false"> <checkout url="${svnUrl}" destPath="${workspace}" /> </svn> </target> <target name="compile" depends="svn" description="======compile project======"> <mkdir dir="${build}" /> <copy includeemptydirs="false" todir="${build}"> <fileset dir="${src}" excludes="**/*.java"/> </copy> <javac includejavaruntime="true" debug="true" debuglevel="${debuglevel}" destdir="${build}" source="${source}" target="${target}" encoding="utf-8"> <src path="${src}" /> <classpath> <path refid="project.classpath"> </path> <path refid="java6"> </path> </classpath> </javac> </target> <target name="war" depends="compile" description="======compress j2ee war file======"> <mkdir dir="${dist}" /> <war destfile="${warfile}" webxml="${web}/WEB-INF/web.xml"> <fileset dir="${web}"> <include name="**/*.jsp"/> <include name="**/*-servlet.xml"/> <include name="**/applicationContext.xml"/> </fileset> <lib dir ="${lib}"/> <classes dir ="${build}"/> </war> </target> <target name="shutdowntomcat" description="========shutdowntomcat==========="> <exec executable="${tomcat1.home}/bin/shutdown.sh" failonerror="false"></exec> <sleep seconds="10"/> <exec executable="${tomcat2.home}/bin/shutdown.sh" failonerror="false"></exec> <sleep seconds="10"/> <echo message="it is secuessful of tomcat's shutdownning !" /> </target> <target name="startuptomcat" description="========startuptomcat==========="> <sleep seconds="5"/> <exec executable="${tomcat1.home}/bin/startup.sh" failonerror="false"></exec> <sleep seconds="5"/> <exec executable="${tomcat2.home}/bin/startup.sh" failonerror="false"></exec> <echo message="it is secuessful of tomcat's startuping !" /> </target> <target name="deploy" depends="war"> <copy file="${warfile}" todir="${tomcat1.home}/webapps" /> <copy file="${warfile}" todir="${tomcat2.home}/webapps" /> <echo message="it is secuessful of project deploy !" /> </target> <target name="auto" depends="shutdowntomcat,deploy,startuptomcat"> <echo message="DONE!!!!" /> </target> </project>
文件重要语句说明:
3行:定义project的相关信息,包括名称,默认处理的target等信息;
4行:定义ANT引用的属性文件;
6行:定义了Svn所需要用到的jar包位置;
12行:定义java类库文件lib;
17行:定义编译所需要的文件目录及其使用的lib包;
22行:定义清理相关文件目录的target;
29行:定义svn抽取代码的相关配置任务;
31行:定义svn抽取代码的target;
38行:定义编译的target;
55行:根据相关配置生成发布的war;
68行:定义关闭tomcat集群中的节点target,从代码中可以看出,定义了两个tomcat节点;
76行:定义启动tomcat集群中的节点target,从代码中可以看出,定义了两个tomcat节点;
84行:定义发布工程的的target;
90行:定义Ant执行工作的开始target;
注:相关标签的含义请查阅其他的相关资料。
4、在Ant-Svn目录下建立一个临时存放编译和发布工作的workspace目录:
[root@localhost ant-svn]# mkdir workspace
[root@localhost ant-svn]# chmod u+x workspace
5、建立批量执行发布命令的Shell程序文件batch-ant.sh:
[html]
view plaincopyprint?
#!/bin/sh echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log echo "============================ batch-ant-exe =========================" >> /usr/local/ant/ant-svn/res.log echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log date >> /usr/local/ant/ant-svn/res.log echo "============================ init the env start =====================" >> /usr/local/ant/ant-svn/res.log export JAVA_HOME=/usr/java/jdk1.6.0_30 export JAVA_BIN=/usr/java/jdk1.6.0_30/bin export ANT_HOME=/usr/local/ant export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN ANT_HOME PATH CLASSPATH echo "============================ init the env end ======================" >> /usr/local/ant/ant-svn/res.log echo "============================ close apache the env start =============" >> /usr/local/ant/ant-svn/res.log /usr/local/apache/bin/apachectl -k stop echo "============================ close apache the env end =============" >> /usr/local/ant/ant-svn/res.log date >> /usr/local/ant/ant-svn/res.log echo "============================ execute the ant cmd start =============" >> /usr/local/ant/ant-svn/res.log cd /usr/local/ant/ant-svn ant -buildfile build-mvc.xml echo &date #sleep 1m #echo &date #ant -buildfile build-test.xml #echo "=========================== execute the ant cmd end ==== =========" >> /usr/local/ant/ant-svn/res.log #date >> /usr/local/ant/ant-svn/res.log echo "============================ open apache the env start ==============" >> /usr/local/ant/ant-svn/res.log /usr/local/apache/bin/apachectl -k start echo "============================ open apache the env end ==============" >> /usr/local/ant/ant-svn/res.log
#!/bin/sh echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log echo "============================ batch-ant-exe =========================" >> /usr/local/ant/ant-svn/res.log echo "=========================================================================" >> /usr/local/ant/ant-svn/res.log date >> /usr/local/ant/ant-svn/res.log echo "============================ init the env start =====================" >> /usr/local/ant/ant-svn/res.log export JAVA_HOME=/usr/java/jdk1.6.0_30 export JAVA_BIN=/usr/java/jdk1.6.0_30/bin export ANT_HOME=/usr/local/ant export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN ANT_HOME PATH CLASSPATH echo "============================ init the env end ======================" >> /usr/local/ant/ant-svn/res.log echo "============================ close apache the env start =============" >> /usr/local/ant/ant-svn/res.log /usr/local/apache/bin/apachectl -k stop echo "============================ close apache the env end =============" >> /usr/local/ant/ant-svn/res.log date >> /usr/local/ant/ant-svn/res.log echo "============================ execute the ant cmd start =============" >> /usr/local/ant/ant-svn/res.log cd /usr/local/ant/ant-svn ant -buildfile build-mvc.xml echo &date #sleep 1m #echo &date #ant -buildfile build-test.xml #echo "=========================== execute the ant cmd end ==== =========" >> /usr/local/ant/ant-svn/res.log #date >> /usr/local/ant/ant-svn/res.log echo "============================ open apache the env start ==============" >> /usr/local/ant/ant-svn/res.log /usr/local/apache/bin/apachectl -k start echo "============================ open apache the env end ==============" >> /usr/local/ant/ant-svn/res.log
文件重要语句说明:
9-16行:引入相关的环境变量,包括java、ant;
20行:关闭apache tomcat集群服务器;
26行:ant命令,执行build-mvc.xml文件内容;
35行:启动apache tomcat集群服务器;
注:shell编程请参阅其他资料。
6、建立监控结果文件:res.log
[root@localhost ant-svn]# touch res.log
7、执行批处理Shell脚本batch-ant.sh文件:
[root@localhost ant-svn]# sh batch-ant.sh
显示结果:
[html]
view plaincopyprint?
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
httpd (no pid file) not running
Buildfile: /usr/local/ant/ant-svn/build-mvc.xml
shutdowntomcat:
[exec] Feb 19, 2014 7:04:09 AM org.apache.catalina.startup.Catalina stopServer
[exec] SEVERE: Catalina.stop:
[exec] java.net.ConnectException: Connection refused
[exec] at java.net.PlainSocketImpl.socketConnect(Native Method)
[exec] at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
[exec] at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
[exec] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
[exec] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
[exec] at java.net.Socket.connect(Socket.java:529)
[exec] at java.net.Socket.connect(Socket.java:478)
[exec] at java.net.Socket.<init>(Socket.java:375)
[exec] at java.net.Socket.<init>(Socket.java:189)
[exec] at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[exec] at java.lang.reflect.Method.invoke(Method.java:597)
[exec] at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)
[exec] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)
[exec] Feb 19, 2014 7:04:20 AM org.apache.catalina.startup.Catalina stopServer
[exec] SEVERE: Catalina.stop:
[exec] java.net.ConnectException: Connection refused
[exec] at java.net.PlainSocketImpl.socketConnect(Native Method)
[exec] at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
[exec] at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
[exec] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
[exec] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
[exec] at java.net.Socket.connect(Socket.java:529)
[exec] at java.net.Socket.connect(Socket.java:478)
[exec] at java.net.Socket.<init>(Socket.java:375)
[exec] at java.net.Socket.<init>(Socket.java:189)
[exec] at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[exec] at java.lang.reflect.Method.invoke(Method.java:597)
[exec] at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)
[exec] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)
[echo] it is secuessful of tomcat's shutdownning !
clear:
[delete] Deleting directory /usr/local/ant/ant-svn/workspace
svn:
[mkdir] Created dir: /usr/local/ant/ant-svn/workspace
[svn] Deprecated attribute 'username'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.
[svn] Deprecated attribute 'password'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.
[svn] Deprecated attribute 'javahl'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead.
compile:
[mkdir] Created dir: /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes
[javac] /usr/local/ant/ant-svn/build-mvc.xml:44: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 4 source files to /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes
war:
[war] Building war: /usr/local/ant/ant-svn/workspace/mvc.war
deploy:
[copy] Copying 1 file to /usr/local/tomcat1/webapps
[copy] Copying 1 file to /usr/local/tomcat2/webapps
[echo] it is secuessful of project deploy !
startuptomcat:
[echo] it is secuessful of tomcat's startuping !
auto:
[echo] DONE!!!!
BUILD SUCCESSFUL
Total time: 48 seconds
Wed Feb 19 07:04:52 PST 2014
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName httpd (no pid file) not running Buildfile: /usr/local/ant/ant-svn/build-mvc.xml shutdowntomcat: [exec] Feb 19, 2014 7:04:09 AM org.apache.catalina.startup.Catalina stopServer [exec] SEVERE: Catalina.stop: [exec] java.net.ConnectException: Connection refused [exec] at java.net.PlainSocketImpl.socketConnect(Native Method) [exec] at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) [exec] at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) [exec] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) [exec] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) [exec] at java.net.Socket.connect(Socket.java:529) [exec] at java.net.Socket.connect(Socket.java:478) [exec] at java.net.Socket.<init>(Socket.java:375) [exec] at java.net.Socket.<init>(Socket.java:189) [exec] at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [exec] at java.lang.reflect.Method.invoke(Method.java:597) [exec] at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338) [exec] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416) [exec] Feb 19, 2014 7:04:20 AM org.apache.catalina.startup.Catalina stopServer [exec] SEVERE: Catalina.stop: [exec] java.net.ConnectException: Connection refused [exec] at java.net.PlainSocketImpl.socketConnect(Native Method) [exec] at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) [exec] at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) [exec] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) [exec] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) [exec] at java.net.Socket.connect(Socket.java:529) [exec] at java.net.Socket.connect(Socket.java:478) [exec] at java.net.Socket.<init>(Socket.java:375) [exec] at java.net.Socket.<init>(Socket.java:189) [exec] at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:422) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [exec] at java.lang.reflect.Method.invoke(Method.java:597) [exec] at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338) [exec] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416) [echo] it is secuessful of tomcat's shutdownning ! clear: [delete] Deleting directory /usr/local/ant/ant-svn/workspace svn: [mkdir] Created dir: /usr/local/ant/ant-svn/workspace [svn] Deprecated attribute 'username'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead. [svn] Deprecated attribute 'password'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead. [svn] Deprecated attribute 'javahl'. This attribute will disappear with SVNANT 1.3.2. Use svnSetting instead. compile: [mkdir] Created dir: /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes [javac] /usr/local/ant/ant-svn/build-mvc.xml:44: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 4 source files to /usr/local/ant/ant-svn/workspace/WebContent/WEB-INF/classes war: [war] Building war: /usr/local/ant/ant-svn/workspace/mvc.war deploy: [copy] Copying 1 file to /usr/local/tomcat1/webapps [copy] Copying 1 file to /usr/local/tomcat2/webapps [echo] it is secuessful of project deploy ! startuptomcat: [echo] it is secuessful of tomcat's startuping ! auto: [echo] DONE!!!! BUILD SUCCESSFUL Total time: 48 seconds Wed Feb 19 07:04:52 PST 2014 httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
文件重要语句说明:
1-2行:执行ant文件的关闭apache tomcat 集群服务器配置的结果;
3行:执行ant命令;
5行:执行名为shutdowntomcat的target标签,关闭tomcat服务,包括tomcat1与tomcat2两个节点服务;
8、27行:表示在关闭tomcat服务时,原本tomcat服务根本没有打开,所以在关闭时提示连接被拒绝;
46行:执行名为clear的target标签;
49行:执行名为svn的target标签,从svn服务器获取相关项目的代码;
55行:执行名为compile的target标签,编译工程;
60行:执行名为war的target标签,生成发布的war包;
63行:执行名为deploy的target标签,发布工程;
68行:执行名为startuptomcat的target标签,启动tomcat服务,包括tomcat1与tomcat2两个节点服务;
71行:执行名为auto的target标签,实际上只是一个执行入口;
74行:表示执行ant命令成功;
78行:执行ant文件的启动apache tomcat 集群服务器配置的结果;
8、在浏览器中输入:http://192.168.31.132/mvc/index.jsp,结果如下图所示:
从图中可以看出发布成功。
注:1、以上过程在Centos 6.3所属32位系统下调试通过;
2、shell脚本中没有处理异常。
/article/8483386.html
相关文章推荐
- CentOS系统下Apache Ant自动从SVN获取代码并通过Tomcat集群发布工程
- jenkins 自动从svn获取源码通过maven打包后发布到远端tomcat
- Linux系统下tomcat自动拉取代码打包发布的配置部署和脚本编写(转朋友)
- 不通用版(从SVN取版本,通过MAVEN生成JAVA包,通过SALTSTACK传送到远程服务器并自动重启TOMCAT服务)PYTHON代码
- centOS 搭建SVN服务器,提交自动发布代码,详细教程,及注意事项
- 如何搭建一台 通过SVN 提交代码自动发布的 nodeJs 服务器.
- centos下搭建SVN服务器 并且自动发布代码
- centos下搭建SVN服务器 并且自动发布代码
- 一个简单的dos脚本, svn 获取代码 - Tomcat 备份 - Maven 编译 - 停止/启动Tomcat - Tomcat站点 发布
- centos下,svn通过钩子同步发布到Apache访问目录时,禁止.svn的访问
- linux系统通过nginx实现tomcat集群
- 如何设置eclipse开发的web工程自动发布到tomcat的webapps下?
- 日期,为下拉列表添加日期,优化,目前本人博客上最优的解决方案,之前学习的通过判断得到平年闰年,而这个是让系统自动去判断,无须if判断,代码示例
- CentOS下Clonezilla通过网络自动备份还原系统
- 通过代码获取工程目录下plist文件下的内容
- Centos6.5系统搭建tomcat7.0.57通过msm实现session共享
- Ajax中通过JS代码自动获取表单元素值的示例代码
- phper 的两个实用批处理助你自动格式化php代码、清除svn、netbeans等工程文件
- 自动通过svn checkout代码并编译部署的脚步
- CentOS6.0通过路由器自动获取IP上网