svn-maven-tomcat自动发布脚本

#!/bin/sh

#svn-maven-tomcat自动发布脚本
#变量设置
svnpath=svn://10.60.10.120/研发部/xx-maven
svnusername=xxx
svnpassword=xxxn888
workplace=xxepp
projname=xxepp
tomcat_server=10.60.10.161
webappsPath=/usr/local/tomcat/webapps

#环境变量设置
export JAVA_HOME=/usr/local/jdk18
export CLASSPATH=${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export M2_HOME=/usr/local/apache-maven-3.3.9
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

rm -fr ${workplace}

#从svn上面export代码
svn export ${svnpath} ./${workplace} --username ${svnusername} --password ${svnpassword}

#maven编译
compileSuccessFlag=0

cd ${workplace}
/usr/local/apache-maven-3.3.9/bin/mvn clean package -Dmaven.test.skip=true

if [ $? -eq 0 ]; then
compileSuccessFlag=1
echo "maven编译成功"
else
echo "maven编译失败"
fi

cd ../

#如果编译失败,直接退出

if [ ${compileSuccessFlag} -eq 0 ]; then
echo "编译失败,程序退出"
exit 1;
fi

#编译成功,war存在,则复制到tomcat目录,重启tomcat
warPath=./${workplace}/target/${projname}.war
if [ -f "${warPath}" ]; then

#删除老的war包,将新的包拷贝过去
#ssh ${tomcat_server} rm -rf ${webappsPath}/${projname}.war
ssh ${tomcat_server} find ${webappsPath}/old/ -mtime +7|xargs rm -rf
ssh ${tomcat_server} mv ${webappsPath}/${projname}.war ${webappsPath}/old/${projname}$(date +%s).war
ssh ${tomcat_server} rm -rf ${webappsPath}/${projname}
scp  ./${workplace}/target/${projname}.war  ${tomcat_server}:${webappsPath}/

#重启tomcat
echo "重启tomcat..."
ssh ${tomcat_server} 'source /root/.bash_profile;/usr/local/tomcat/bin/shutdown.sh'
sleep 3
if [ $? -eq 0 ]; then
ssh ${tomcat_server} 'source /root/.bash_profile;/usr/local/tomcat/bin/startup.sh'
sleep 6
echo "重启成功"
else
echo "tomcat启动失败"
fi

else
echo "war包不存在"
fi

备注:因maven服务器和tomcat服务器在不同的主机上,需要做公钥认证

posted on 2016-08-09 16:53  vijayfly  阅读(356)  评论(0编辑  收藏  举报

导航