开发springboot 项目,每次(测试)部署时,要先打包成 jar 文件,再 SCP 上传的linux 服务器上,用shell 命令停止原有的服务,删除原有的代码,再运行刚刚上传的jar …,这是一系列的重复繁琐操作。而 wagon-maven-plugin
可以简化这些繁琐操作。
<dependency>
<groupId>org.codehaus.mojogroupId>
<artifactId>wagon-maven-pluginartifactId>
<version>1.0version>
dependency>
<build>
<finalName>assetsfinalName>
<extensions>
<extension>
<groupId>org.apache.maven.wagongroupId>
<artifactId>wagon-sshartifactId>
<version>2.10version>
extension>
extensions>
<plugins>
<plugin>
<groupId>org.codehaus.mojogroupId>
<artifactId>wagon-maven-pluginartifactId>
<version>1.0version>
<configuration>
<fromFile>target/assets.jarfromFile>
<url>url>
<commands>
<command>sh /usr/tomcat_assets/stop.shcommand>
<command>sh /usr/tomcat_assets/start.shcommand>
commands>
<displayCommandOutputs>truedisplayCommandOutputs>
configuration>
plugin>
plugins>
build>
使用步骤:
先打包,执行 mvn clean package
。我们熟知的maven 打包命令,这里对 springboot 项目进行打包 ;
再上传打包的文件,执行:wagon:upload-single
;
执行shell 命令(脚本),主要是停止、删除原来的服务,启动新的服务,执行:wagon:shexec
。
如果想上传文件、执行shell 命令 一起执行,将两个命令合并到一块,即: mvn wagon:upload-single wagon:sshexec
。(注意: 命令要有先后顺序)
如果想打包、上传文件、执行shell 命令 三者一起执行,则执行: mvn clean package wagon:upload-single wagon:sshexec
。
wagon:upload-single wagon:sshexec
合并到 package
命令中(优化、可选步骤)如果觉得上面的命令复杂,每次都是 打包、上传文件、执行shell 脚本三者一起执行,可以将 上传文件、执行shell 脚本 合并到 打包命令中,即将 wagon:upload-single wagon:sshexec
合并到 package
命令中,当执行打包命令 package
时,就会执行 上传文件、 执行shell 命令。
<build>
<finalName>assetsfinalName>
<extensions>
<extension>
<groupId>org.apache.maven.wagongroupId>
<artifactId>wagon-sshartifactId>
<version>2.10version>
extension>
extensions>
<plugins>
<plugin>
<groupId>org.codehaus.mojogroupId>
<artifactId>wagon-maven-pluginartifactId>
<version>1.0version>
<executions>
<execution>
<id>upload-deployid>
<phase>packagephase>
<goals>
<goal>upload-singlegoal>
<goal>sshexecgoal>
goals>
<configuration>
<fromFile>target/assets.jarfromFile>
<url> url>
<commands>
<command>sh /usr/tomcat_assets/stop.shcommand>
<command>sh /usr/tomcat_assets/start.shcommand>
commands>
<displayCommandOutputs>truedisplayCommandOutputs>
configuration>
execution>
executions>
plugin>
plugins>
build>
使用方法: 执行 mvn clean package
即可。
此处的 mvn clean package
相当于执行 mvn clean package wagon:upload-single wagon:sshexec
。
说明:
此步骤仅仅优化打包、上传、 执行shell 命令的执行,不是必须的配置。
文件上传会涉及到密码,密码可以放到pom.xml (上面已演示), 也可以放到 maven 的 settings.xml 。
<servers>
<server>
<id>assetsid>
<username>rootusername>
<password>password>
server>
servers>
注意:
的值 要保证唯一。
标签增加
,其值与settings.xml 中
标签中的
的值一样。
<configuration>
<serverId>assetsserverId>
configuration>
stop.sh
停止服务的脚本:
#!/bin/bash
APP_NAME='assets.jar'
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ];then
echo 'Stop Process...'
kill -9 $tpid
fi
sleep 1
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ];then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
start.sh
启动脚本:
#!/bin/bash
fileDir=/usr/tomcat_assets
fileName=assets.jar
nohup /usr/java/jdk1.8.0_201/bin/java -jar ${fileDir}/${fileName} > ${fileDir}/assets.log 2>&1 &
echo $?
echo 'Start Success! '
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<configuration>
<source>1.8source>
<target>1.8target>
<encoding>UTF-8encoding>
configuration>
plugin>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<mainClass>xxx.yyy.zzz.ApplicationmainClass>
configuration>
<executions>
<execution>
<goals>
<goal>repackagegoal>
goals>
execution>
executions>
plugin>