通过SVN+ANT实现远程Java WEB应用的程序更新。
罗嗦一下,现在的情况是这样的,对于我们的一些客户,我的应用是部署到他们的服务器上的,而我不能远程桌面到他们的服务器进行程序的更新,同时客户的计算机水平有限,所以往往要远程更新程序是一件麻烦的事情。以前都是远程桌面到客户的电脑,再二次远程桌面到他们的服务器来更新程序,网络稍有不给力,就无法更新。这种方式会消耗大量的时间,非常麻烦,而且对于客户来说,体验很差!换成现在的SVN+ANT的方式,每当提交新的代码或修改BUG后,只要联系客户提醒一下,客户自己远程桌面到他们的服务器,双击桌面的更新程序批处理程序(bat),短短几秒钟就更新好程序了。
现在我的一个应用是部署到远程VPS服务器上的,系统源码是通过SVN进行版本控制,开发人员在任何时候都可以提交新的代码。服务器通过svn客户端获得最新的源码,之后通过ant实现代码编译和部署。原理图如下:
环境配置
=============================================================
svn客户端
下载地址:http://pan.baidu.com/share/link?shareid=140839&uk=3054418851
把下载下来的压缩文件解压到本地目录中,如下:
之后,把路径【D:\ProgramFiles\svn】路径加入到环境变量中,之后在cmd窗口中执行【svn --version】,输出结果如下,表示环境变量设置成功。
ant
下载地址:http://pan.baidu.com/share/link?shareid=140633&uk=3054418851
把下载下来的压缩文件解压到D盘根目录,解压后的路径如下:
之后,把路径【D:\apache-ant-1.8.4\bin】加入到环境变量中。,之后在cmd窗口中执行【ant -v】,输出结果如下,表示环境变量设置成功。
下载初始版本+build.xml配置
=============================================================
我在svn上保存的源码是MyEclispe结构的工程(我的工程名称叫:personal),现在把svn上第一个版本下载下到服务器的【D:\workplaces\personal】目录(手动创建对应的目录),通过运行【svn checkout svn://61.188.39.80:51604/personal D:\workplaces\personal】(其中【svn://61.188.39.80:51604/personal】是我的svn地址),这个时候可能需要您输入svn服务器的用户名和密码才会让你继续下载源码,下载完成后的目录如下:
其中有一个build.xml,这个文件是用于ant编译和部署的应用的。
<?xml version="1.0"encoding="utf-8"?>
<project default="build"basedir=".">
<!--应用名称 -->
<propertyname="appname" value="personal" />
<!--源文件(类) -->
<propertyname="src" value="src" />
<!--源文件(WEB目录) -->
<propertyname="WebContent" value="WebRoot" />
<!--服务器目录 -->
<propertyname="tomcat.dir" value="d:\apache-tomcat-6.0.9" />
<!--目标输出目录 -->
<propertyname="dest" value="${tomcat.dir}\webapps\${appname}" />
<!--编译输出目录 -->
<propertyname="classes" value="${dest}\WEB-INF\classes" />
<!--本地类路径 -->
<propertyname="local_classpath" value="${WebContent}\WEB-INF\lib"/>
<!--J2EE类路径 -->
<propertyname="j2eeclasspath" value="${tomcat.dir}\lib" />
<targetname="init">
<echomessage="-------------------------------------------------------------"/>
<echomessage="" />
<echomessage="开始编辑appname工程" />
<echomessage="" />
<echomessage="-------------------------------------------------------------"/>
<echomessage="" />
<echomessage="" />
<echomessage="-------------------------------------------------------------"/>
<echomessage="复制文件" />
<copytodir="${dest}">
<filesetdir="${WebContent}/" />
</copy>
<echomessage="完成复制" />
<echomessage="-------------------------------------------------------------"/>
<echomessage="" />
<echomessage="" />
<echomessage="-------------------------------------------------------------"/>
<echomessage="删除编译目录和缓存文件" />
<deletedir="${classes}" />
<deletedir="${tomcat.dir}/work/" />
<echomessage="完成删除" />
<echomessage="-------------------------------------------------------------"/>
<echomessage="" />
<echomessage="" />
<echomessage="-------------------------------------------------------------"/>
<echomessage="复制配置文件" />
<copytodir="${classes}">
<filesetdir="${src}" />
</copy>
<echomessage="完成复制" />
<echomessage="-------------------------------------------------------------"/>
</target>
<targetname="build" depends="init">
<echomessage="" />
<echomessage="" />
<echomessage="-------------------------------------------------------------"/>
<echomessage="开始编译" />
<javacsrcdir="${src}" destdir="${classes}">
<compilerargline="-encoding UTF-8" />
<includename="**/*.java" />
<classpath>
<filesetdir="${j2eeclasspath}">
<includename="**/*.jar" />
</fileset>
<filesetdir="${local_classpath}">
<includename="**/*.jar" />
</fileset>
</classpath>
</javac>
<echomessage="" />
<echomessage="" />
<echomessage="完成编译" />
<echomessage="-------------------------------------------------------------"/>
</target>
</project>
一般情况下,需要修改的配置内容可能如下:
<!-- 应用名称 -->
<property name="appname"value="personal" />
<!-- 服务器目录 -->
<property name="tomcat.dir"value="d:\apache-tomcat-6.0.9" />
<!-- 目标输出目录 -->
<property name="dest"value="${tomcat.dir}\webapps\${appname}" />
<!-- 编译输出目录 -->
实战版本更新
=============================================================
在桌面或者其它地方创建一个update.bat的批处理文件(直接新建一个txt文件,修改文件名为update.bat即可),内容如下:
svn cleanup D:\workplaces\personal\src
svn cleanup D:\workplaces\personal\WebRoot
svn update D:\workplaces\personal\src
svn update D:\workplaces\personal\WebRoot
cd D:\workplaces\personal
ant
好了,现在每次要更新程序就很简单了,只要先停下tomcat服务,然后双击update.bat就可以实现程序更新了。其实可以把tomcat的startup.bat和shutdown.bat也放在桌面快捷方式上,这样,给客户简单说明一下,以后更新服务器程序就可以交给客户来做了。