Ant自动打包备份脚本


分享一个两年前自己写的ant打包、备份脚本~~~~(虽然现在都是docker image ^_^)

主要跟tomcat进行结合实现自动服务重启、备份

<?xml version="1.0" encoding="UTF-8"?>
<project name="operation" basedir="." default="redeploy">

	<!-- 系统环境配置 -->
	<property environment="env" />
	<!-- 源码路径 -->
	<property name="src.dir" value="${basedir}/src" />
	<!-- 编译路径 -->
	<property name="dist.dir" value="${basedir}/dist" />
	<!-- 静态资源路径 -->
	<property name="web.root.dir" value="${basedir}/WebRoot" />
	<!-- 当前工程类路径 -->
	<property name="lib.dir" value="${basedir}/WebRoot/WEB-INF/lib" />
	<!-- 部署描述符路径 -->
	<property name="web.xml.dir" value="${basedir}/WebRoot/WEB-INF/web.xml" />
	<!-- War包名称 -->
	<property name="war.name" value="operation" />
	<!-- Tomcat路径 -->
	<property name="tomcat.dir" value="F:/tools/apache-tomcat" />
	<!-- Tomcat可执行脚本路径 -->
	<property name="tomcat.bin.dir" value="${tomcat.dir}/bin" />
	<!-- Tomcat发布应用路径 -->
	<property name="tomcat.webapps.dir" value="${tomcat.dir}/webapps" />
	<!-- Tomcat发布日志路径 -->
	<property name="tomcat.logs.dir" value="${tomcat.dir}/logs" />
	<!-- 当前时间 -->
	<tstamp>
		<format property="current.time" pattern="yyyyMMddHHmmss" locale="zh" />
	</tstamp>

	<path id="build-classpath">
		<fileset dir="${lib.dir}">
			<include name="**/*.jar" />
		</fileset>
	</path>

	<target name="init" description="验证操作系统">
		<echo>验证操作系统...</echo>
		<echo>${os.name}</echo>
		<echo>验证操作系统完成</echo>
	</target>

	<target name="clean" depends="init" description="清除旧的编译文件">
		<echo>正在清除旧的编译文件...</echo>
		<delete dir="${dist.dir}" />
		<mkdir dir="${dist.dir}" />
		<echo>清除旧的编译文件完成</echo>
	</target>

	<target name="compile" depends="clean" description="编译源码">
		<echo>正在编译源码...</echo>
		<javac srcdir="${src.dir}" destdir="${dist.dir}"
			includeantruntime="false">
			<compilerarg line="-encoding UTF-8" />
			<classpath refid="build-classpath" />
		</javac>
		<echo>编译源码完成</echo>
	</target>

	<target name="generate-war" depends="compile" description="生成War包">
		<echo>正在生成War包...</echo>
		<delete dir="${basedir}/${war.name}.war" />
		<war destfile="${basedir}/${war.name}.war" webxml="${web.xml.dir}"
			excludes="*.svn">
			<fileset dir="${web.root.dir}">
				<include name="**/**.*" />
				<exclude name="**/*.jar" />
				<exclude name="**/*.class" />
			</fileset>
			<lib dir="${lib.dir}" />
			<classes dir="${dist.dir}" />
		</war>
		<echo>生成War包完成</echo>
	</target>

	<target name="stop-tomcat" depends="generate-war" description="停止Tomcat">
		<echo>正在关闭Tomcat...</echo>
		<exec executable="${tomcat.bin.dir}/shutdown.bat" failonerror="false"
			output="${tomcat.logs.dir}/log.txt" append="true">
			<env key="CATALINA_HOME" path="${tomcat.dir}" />
			<arg value="/c shutdown.bat" />
		</exec>
		<!-- 检测tomcat的URL是否访问失败(用not标签),访问失败则认为tomcat已经关闭 -->
		<waitfor maxwait="5" maxwaitunit="minute" checkevery="5">
			<not>
				<http url="http://localhost:8080/" />
			</not>
		</waitfor>
		<echo>关闭Tomcat完成</echo>
	</target>

	<target name="old-war-exist-check" depends="stop-tomcat"
		description="检查旧的同名War包是否存在">
		<echo>检查旧的同名War包是否存在...</echo>
		<available file="${tomcat.dir}/webapps/${war.name}.war"
			property="old-war-isexist" />
	</target>

	<target name="backup-old-war" depends="old-war-exist-check" if="old-war-isexist"
		description="如果旧的同名War包存在则备份">
		<echo>旧的同名war包[存在],开始备份...</echo>
		<copy tofile="${tomcat.dir}/webapps/${war.name}.war.bak.${current.time}">
			<fileset file="${tomcat.dir}/webapps/${war.name}.war" />
		</copy>
		<echo>旧的同名war包[存在],备份完成</echo>
	</target>

	<target name="delete-old-war" depends="backup-old-war" if="old-war-isexist"
		description="如果旧的同名War包备份完成后则删除">
		<echo>删除旧的同名war包...</echo>
		<delete file="${tomcat.dir}/webapps/${war.name}.war" />
		<echo>删除旧的同名war包完成</echo>
		<echo>删除旧的同名war已解压工程...</echo>
		<delete dir="${tomcat.dir}/webapps/${war.name}" />
		<echo>删除旧的同名war已解压工程完成</echo>
	</target>

	<target name="copy-new-war-into-webapps" depends="delete-old-war"
		description="把新的War包复制到Tomcat的webapps中">
		<echo>复制新的War包到tomcat的webapps目录下...</echo>
		<copy tofile="${tomcat.webapps.dir}/${war.name}.war">
			<fileset file="${basedir}/${war.name}.war" />
		</copy>
		<echo>复制新的War包到tomcat的webapps目录下完成</echo>
	</target>

	<target name="start-tomcat" depends="copy-new-war-into-webapps"
		description="启动Tomcat">
		<echo>正在启动Tomcat...</echo>
		<exec executable="${tomcat.bin.dir}/startup.bat" failonerror="false"
			vmlauncher="false" output="${tomcat.logs.dir}/log.txt" append="true">
			<env key="CATALINA_HOME" path="${tomcat.dir}" />
			<arg value="/c startup.bat" />
		</exec>
		<!-- 检测tomcat的URL是否可以访问成功,访问成功则认为tomcat启动完成 -->
		<waitfor maxwait="5" maxwaitunit="minute" checkevery="5">
			<http url="http://localhost:8080/" />
		</waitfor>
		<echo>启动Tomcat完成</echo>
	</target>

	<target name="redeploy" depends="start-tomcat" description="自动发布">
		<echo>发布完成</echo>
	</target>

</project>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值