SVN+ANT实现远程Java WEB应用的更新

通过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也放在桌面快捷方式上,这样,给客户简单说明一下,以后更新服务器程序就可以交给客户来做了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值