Ant远程部署到Tomcat

本文涉及的工具

Eclipse4.5.2java

Ant1.9.6(Eclipse自带的插件)web

jsch-0.1.53(直接点击能够打开下载页面)api

具体步骤以下

1.建立build.xml文件

在项目中添加build.xml文件,build.xml是ant默认的文件名,能够修改成其余的名字,不影响Ant脚本的执行,以下图,build.xml和build-webdemo.xml均可以做为Ant脚本。tomcat

2.修改build.xml文件

能够参考下面的文件,根据具体状况修改远程主机帐号密码和tomcat部署的路径服务器

请肯定远程的Tomcat中包含相应的目录,例如本例中的/opt/tomcat7/webapps/demoapp

否则会提示目录不存在,特别是webapps后面的路径,必须存在,若是不存在,须要先手动建立相应的文件夹,固然你也能够完善一下Ant脚本,先执行一个远程命令,建立相应的文件夹。less

<?xml version="1.0" encoding="UTF-8"?>
<!--
使用该脚本是用有些前置条件。
本脚本适用于eclipse或者myeclipse环境中使用
编译文件的默认输出目录为
WebContent/WEB-INF/classes
若是不肯定,能够先查看项目java build path 的default output folder

请肯定项目已经build过,或者执行该ant脚本以前手动执行build

执行前,请肯定是否使用jdk1.7编译的class代码

能够根据项目的名字不一样,修改property里面的value值
-->
<project name="demo" default="war">

	<property name="war.name" value="${ant.project.name}"/>
	<property name="jar.name" value="${ant.project.name}-api.jar"/>
	<property name="tomcat.home" value="/opt/tomcat7"/>
	<property name="tomcat.webapps.context" value="${ant.project.name}"/>
	<property name="remote.host" value="192.168.1.110"/>

	
	<!-- 格式化时间 -->
	<tstamp>
		<format property="fdate" pattern="yyyyMMddHHmmss"/>
	</tstamp>
	
	<available file="./WebContent/WEB-INF/classes" property="pathisexit" type="dir"/>
	
	<!-- 生成war文件 -->
	<target name="war" depends="init.test">
		<delete file="${war.name}.war" />

		<war destfile="${war.name}.war" webxml="./WebContent/WEB-INF/web.xml">
			<fileset dir="./WebContent">
				<!--
				根据须要能够适当的增减文件夹,里面是一个例子,能够参考使用,若是不配置,就是默认WebContent下面的全部文件夹和文件
				<include name="WEB-INF/classes/**/*" />
				<exclude name="WEB-INF/classes/**/*.class" />
				<include name="WEB-INF/lib/**/*" />
				<include name="WEB-INF/serviceconf/**/*" />
				-->
			</fileset>
		</war>

	</target>
	
		
	<!-- 远程传输文件夹,须要添加第三方的jar文件才能支持 -->
	<target name="remote-deploy" depends="init.test">
		<scp todir="root@${remote.host}:${tomcat.home}/webapps/${tomcat.webapps.context}" password="0EY*r6Wi" trust="true">
			<fileset dir="./WebContent"></fileset>
		</scp>
	</target>
	
	<!-- 执行脚本重启tomcat
		主意tomcat.home的属性,须要配置正确的tomcat路径
	 -->
	<target name="tomcat.restart">
		<sshexec command="${tomcat.home}/bin/catalina.sh stop -force;ps -ef | grep ${tomcat.home}| grep -v grep|awk '{print $2}'|xargs kill -9;${tomcat.home}/bin/catalina.sh start" 
			host="${remote.host}" username="root" password="0EY*r6Wi"  trust="true"/>
	</target>
	
	<target name="publish">
		<!-- 先分发软件 -->
		<antcall target="remote-deploy" />
		<!-- 而后重启tomcat -->
		<antcall target="tomcat.restart" />
	</target>
	
	<!-- 备份当前文件 -->
	<target name="bakwebapp">
		<echo>cd ${tomcat.home}/webapps;tar -zcvf ${tomcat.webapps.context}.${fdate}.tar.gz ${tomcat.webapps.context}</echo>
		<!-- 执行备份语句 -->
		<sshexec command="cd ${tomcat.home}/webapps;tar -zcvf ${tomcat.webapps.context}.${fdate}.tar.gz ${tomcat.webapps.context}" 
			host="${remote.host}" username="root" password="0EY*r6Wi" trust="true"/>
	</target>
	
	<target name="init.test" unless="pathisexit">
		<fail message="classes文件夹不存在,检查你的IDE的构建路径,本脚本仅适用于IDE环境或者你手动将代码编译到classes文件夹中"/>
	</target>
	

</project>

3.测试效果

编辑完build.xml文件后,右键执行eclipse

默认执行的war,我是考虑防止第一次使用的时候误操做,直接覆盖了远程服务器的项目,若是肯定远程Tomcat的目录能够直接覆盖,在publish前面勾上,而后执行就能够了。ssh

因为依赖jsch.jar文件,因此运行的时候须要将该文件加入到ant的classpath中,见上图,webapp

或者能够配置Ant的运行环境。

配置完以后就能够直接点击run,控制台会提示你进度,祝你好运。

4.总结

若是须要频繁部署到远程服务器,使用这个Ant的脚本仍是比较好用的,轻量级,若是是大型团队能够考虑使用其余的Paas平台。

相关文章
相关标签/搜索