我们的项目比较特殊,基本上每天都要发布一次。为了不影响系统的正常使用,我们的做法是在下班之前把打包好的war放到服务器的一个目录下面(eg:d:\bak)。然后用windows的计划任务在晚上12点自动部署系统,也就是net stop tomcat,删除xx.war,删除xx,然后把d:\bak\xx.war拷贝到webapps下面。然后再net start tomcat。这样在第二天来的上班的时候就可以使用升级过的系统了。也不会影响其他人的使用,不需要中断操作。
关于项目的一个配置我的前几篇文章我也提到过,那个upload的问题就不会发生了。还有就是关于项目开发中的一些问题。比如数据库的连接地址,upload directory的配置等,这些在团队中的每个人都是不一样的,那么在发布的时候都要改成服务器上的正确配置,如果一个月部署一次这到没有什么。但是像我们这样每天部署就不是那么轻松了。而且如果一时不注意很容易造成配置的不正确。所以对于很多配置文件我们都有两份。一份是用户自己开发用的,一份是部署到服务器的配置,这样在开发的时候团队中的每个人都不一样,关于服务器的配置都是一样的,在发布的时候是用的服务器的配置而不是用开发用的配置。eg:web.xml(个人的配置)web-dest.xml 而关键的配置也就是下面这段。
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/*_context.xml,
classpath:spring/global.xml
</param-value>
</context-param>
web-dest.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/*_context.xml,
classpath:spring/global-dest.xml,
classpath:spring/scheduler.xml
</param-value>
</context-param>
注意到其中不一样的。dest里少了scheduler.xml这个主要是定时执行的一些任务,一般在开发的时候都不需要,去掉也可以提升速度,也不会出现那么多的log。还有就是发布的web.xml用了global-dest.xml这个是关于spring的总的配置。
global.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url">
<value>jdbc:jtds:sqlserver://192.168.0.240:1433/fivefortunes;SelectMethod=cursor</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url">
<value>jdbc:jtds:sqlserver://192.168.0.240:1433/outmail;SelectMethod=cursor</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
<bean id="customDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url">
<value>jdbc:jtds:sqlserver://192.168.0.240:1433/custom;SelectMethod=cursor</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
global-dest.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url">
<value>jdbc:jtds:sqlserver://192.168.0.5:1433/fivefortunes;SelectMethod=cursor</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url">
<value>jdbc:jtds:sqlserver://192.168.0.5:1433/outmail;SelectMethod=cursor</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
<bean id="customDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
<property name="url">
<value>jdbc:jtds:sqlserver://192.168.0.5:1433/custom;SelectMethod=cursor</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
还有关于一些properties文件我们采用了用ant部署的时候改名字来达到目的。
build.xml
<move file="${dist.dir}/mail.properties" tofile="${dist.dir}/mail-dev.properties" />
<copy file="${dist.dir}/mail-dest.properties" tofile="${dist.dir}/mail.properties" />
<move file="${dist.dir}/upload.properties" tofile="${dist.dir}/upload-dev.properties" />
<copy file="${dist.dir}/upload-dest.properties" tofile="${dist.dir}/upload.properties" />
这个是在war之前做的,大家眼看也就明白吧,就是把xx-dest.properties,改名成xx.propeties。在打完包之后
<move file="${dist.dir}/mail-dev.properties" tofile="${dist.dir}/mail.properties" />
<move file="${dist.dir}/upload-dev.properties" tofile="${dist.dir}/upload.properties" />
这样就达到了我们无忧的目的了。只要每天部署的时候保证程序能正常运行,ant war一下就安心部署吧。
以上就是全部内容,如果有什么不正确欢迎砸板砖。
分享到:
相关推荐
用Ant实现Java项目的自动构建和部署
ant_shell自动部署
Ant远程部署tomcat脚本
ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml 文件Jenkins部署javaEE项目,助力成功自动化部署。ant +build.xml...
自己整理的在Eclipse下部署远程tomcat的步骤及相关build文件
做过的一个项目部署文档, 步骤清晰标准,如果需要的可以拿去看看
ant脚本,讲本地代码copy到远程linux服务器的tomcat目录下,并重启tomcat,需要下载jsch.jar包放到本地ant-home的lib目录下
图解与代码Ant实现Java项目的自动构建和部署
ant实例教程 Ant实例 web工程部署
用ant完成VSS自动下载编译部署的脚本
但是目前主要被用于Java项目的构建, Ant是用Java语言编写,可以在多个操作系统中运行,目前在绝大部分的Java开源项目中,都选择使用Ant作为构建项目的工具,合理的使用Ant可以大大降低项目构建、部署的难度。...
用Ant实现Java项目的自动构建和部署。 JAVA_Ant详细介绍与应用。 Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它...
Ant 项目构建教程,可以正确指导如何搭建。
ant 自动化构建eclipse web项目, 并且打包发布,启动tomcat和浏览器
在构建web项目中用到的ant的build.xml的例子
在本教程中,您将学习 Ant 这个 Java TM 项目生成工具。由于其灵活性和易用性,Ant 很快在 Java开发人员中流行开来,因此您有必要了解关于它的更多信息。
一个用于weblogic下ant部署的demo。
在Java项目开发中,ant用来打包是最好不过的工具了,有兴趣的朋友们来来看看吧。。。。。
不会用ant打包、部署项目的工程师,不是一个好程序员(测试) 副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领。你可以手动打包、部署你的工程...