使用ant脚本将maven项目发布到wlpServer服务器

<?xml version="1.0" encoding="UTF-8"?>
<!-- 发布项目 -->
<project name="release" default="releaseService" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
	<!-- 必须放在最前面,可以确保能使用到编译平台的环境变量 -->
	<property environment="env" />
	<!-- 工作目录 -->
	<property name="workspace" value="/home/callen/workspace/grepo" />
	<!-- 要执行的项目名称 -->
	<property name="projectName" value="要发布的项目名称" />
	<!-- pom文件路径 -->
	<!--	/home/callen/workspace/grepo/projectName-project/pom.xml-->
	<property name="pom.file" value="${workspace}/${projectName}-project/pom.xml" />
	<!-- maven的路径 -->	
	<property name="maven.home" value="/opt/maven" />
	<!-- 服务器信息 -->
	<property name="host" value="127.0.0.1" /> 
	<property name="host.name" value="callen" /> 
	<property name="host.pwd" value="callen" /> 
	<property name="host.path" value="/opt/resources/wars" />
	
	<!-- 以下为读取pom.xml 文件中的版本信息 -->
	<!-- 使用maven命令获取maven的版本号 -->
	<target name="version" description="获取maven的版本号">
		<echo message="start maven build to war" />
		<!-- 生成同目录下的 mvn.version 文件 -->
		<exec executable="${maven.home}/bin/mvn" output="mvn.version">
			<arg line="help:evaluate -Dexpression=project.version -q -DforceStdout -f ${pom.file}"/>
		</exec>
	</target>
	<!-- 引入 antlib的功能标签,如 for/loadfile等  -->
	<taskdef resource="net/sf/antcontrib/antlib.xml">
	  <classpath>
	    <pathelement location="ant-contrib-1.0b3.jar"/>
	  </classpath>
	</taskdef>
	<!-- 引入 groovy 脚本-->
	<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" >
		<classpath>
			<pathelement location="groovy-5.0.0-alpha-5.jar"/>
			<pathelement location="groovy-ant-5.0.0-alpha-5.jar"/>
		</classpath>
	</taskdef>
	<target name="readVersion" depends="version" description="读取maven的版本号">
		<!-- 读取maven 的版本号 -->
		<property file="mvn.version"/><!-- 读取同目录下的 mvn.version 文件 -->
		<loadfile property="changed.files" srcFile="mvn.version"/>
		<for list="${changed.files}" param="changedFile">
		  <sequential>
		  	<property name="mvn.version" value="@{changedFile}" />
		  </sequential>
		</for>
		<echo message="maven version:${mvn.version}.war" />
		<!-- 去掉换行符,使用groovy脚本 -->
		<groovy>
			def mavenVersion=properties["mvn.version"]
			mavenVersion = mavenVersion.replace("\n", "")
			properties["mvn.version"] = mavenVersion
		</groovy>
		<echo message='${mvn.version}.war'/>
	</target>
	<!-- 以上,得到项目的版本号 -->

	<!-- 执行 maven 打包命令 -->
	<target name="maven" depends="readVersion" description="使用maven进行打包生成war">
		<echo message="start maven build to war" />
		<exec executable="${maven.home}/bin/mvn">
			<arg line="clean install -DskipTests -f ${pom.file} "/>
		</exec>
	</target>
	<!-- 使用文件复制 -->
	<target name="copyWar" depends="maven" description="把war包复制成有版本的">
		<!-- 设置war包路径 -->
		<property name="service.war" value="${workspace}/${projectName}-project/${projectName}/target/${projectName}.war" />
		<property name="service.new.war" value="${workspace}/${projectName}-project/${projectName}/target/${projectName}-${mvn.version}.war" />
		<echo message="service war path:${service.war}" />
		<property name="api.war" value="${workspace}/${projectName}-project/${projectName}api/target/${projectName}api.war" />
		<property name="api.new.war" value="${workspace}/${projectName}-project/${projectName}api/target/${projectName}api-${mvn.version}.war" />
		<echo message="api war path:${api.war}" />
		<copy file="${service.war}" tofile="${service.new.war}" />
		<copy file="${api.war}" tofile="${api.new.war}" />
	</target>
	<!-- 如果使用scp ,则需要下载jsch-0.1.54.jar文件 -->
	 <target name="putWar" depends="copyWar" description="将war包放入服务器中">  
        <echo message="put local war to ssh server" />
	 	<!-- 传输war包到服务器 -->
	 	<echo message="put service war to ssh server" />
        <scp todir="${host.name}:${host.pwd}@${host}:${host.path}" file="${service.new.war}" trust="yes" />
	 	<sleep seconds="2"/>
	 	<echo message="put api war to ssh server" />
	 	<scp todir="${host.name}:${host.pwd}@${host}:${host.path}" file="${api.new.war}" trust="yes" />
	 	<sleep seconds="2"/>
        <echo message="end deploy..." />  
    </target> 
	
	 <target name="releaseService" depends="putWar" description="重启服务"> 
		<echo message="begin deploy..." />
	 	<sshexec host="${host}" username="${host.name}" password="${host.pwd}" trust="yes" 
	 		 command="/opt/wlp/bin/server stop ${projectName}Svr --force" failonerror="false" />
	 	<sshexec host="${host}" username="${host.name}" password="${host.pwd}" trust="yes" 
	 		 command="/opt/wlp/bin/server stop ${projectName}apiSvr --force" failonerror="false" />
		<!-- 若进程还存在,则使用命令 kill 强制杀掉项目进程 -->
	 	<sshexec host="${host}" username="${host.name}" password="${host.pwd}" trust="yes" failonerror="true"
	 		command="ps -ef|grep -v 'grep'|grep ${projectName}|awk '$3~/[0-9]+/{print $2}'|while read s;do kill -9 $s; done;" />
	 	<sleep seconds="2"/>
	 	<!-- 删除缓存信息 -->
	 	<sshexec host="${host}" username="${host.name}" password="${host.pwd}" trust="yes" 
			command="rm -rf /opt/wlp/usr/servers/${projectName}Svr/apps/expanded/*.war" />
	 	<sshexec host="${host}" username="${host.name}" password="${host.pwd}" trust="yes" 
	 		command="rm -rf /opt/wlp/usr/servers/${projectName}apiSvr/apps/expanded/*.war" />
	 	<!-- 启动服务 -->
	 	<sshexec host="${host}" username="${host.name}" password="${host.pwd}" trust="yes" 
	 		command="/opt/wlp/bin/server start ${projectName}Svr --clean" />
	 	<sleep seconds="2"/>
	 	<sshexec host="${host}" username="${host.name}" password="${host.pwd}" trust="yes" 
	 		command="/opt/wlp/bin/server start ${projectName}apiSvr --clean" />
		<echo message="end deploy..." />
	 </target> 
</project>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值