知識
不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
maven wagon插件實現自動化部署
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數:52
使用maven-wagon插件實現自動化部署
wagon-maven-plugin
在項目開發(fā)過程中,經常需要部署代碼到開發(fā)環(huán)境,每天可能有好多次,每次都需要mvn clean install & package,然后上傳到服務器。實際上這些繁瑣的步驟可以通過一個Maven插件wagon-maven-plugin來自動完成
使用步驟
1.導入依賴
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
</dependency>
2.在打包項目pom文件buid中配置
<build>
<finalName>ka-admin</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<configuration>
<!-- 需要部署的文件 : target下生成的包 -->
<fromFile>target/${pack-name}.jar</fromFile>
<!-- 服務器中上傳包部署目錄 -->
<url>scp://服務器賬號:密碼@服務器IP/其它路徑</url>
<!-- 服務器執(zhí)行的命令集合 -->
<commands>
<!-- 上傳后執(zhí)行服務器腳本 可以直接寫指令,也可以寫要運行得腳本路徑 -->
<command>sudo sh /data/deploy/ka-admin/deploy.sh</command>
</commands>
<displayCommandOutputs>true</displayCommandOutputs>
</configuration>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.10</version>
</extension>
</extensions>
</build>
其中
1.<formFile>為target下的jar包 全路徑名稱 如 target/ka-admin.jar
2.<url>為包上傳路徑 格式為 scp://服務器賬號:密碼@服務器IP/其它路徑
3.<commands>為上傳完成后需要在服務器執(zhí)行的指令,可以直接寫指令,也可以寫在服務器中需要執(zhí)行的shell腳本。一個<command>為一條指令,可以配置多條依次執(zhí)行
其它配置固定
執(zhí)行服務器腳本
示例
# 步驟
# 1、把舊包備份到bak目錄
# 2、新包移動到工作區(qū)
# 3、殺死進程
# 4、啟動服務
# 指定啟動環(huán)境 以 java為例
activeProfile="test"
fileName="ka-admin"
logName="cataline.log"
#項目根路徑 工作區(qū)
basePath="/data/deploy/${fileName}"
#包上傳路徑
uploadPath="${basePath}/data/upload"
#備份包路徑
bakPath="${basePath}/data/bak"
baseJar="${basePath}/${fileName}.jar"
uploadJar="${uploadPath}/${fileName}.jar"
bakJar="${bakPath}/${fileName}.jar"
# 判斷備份路徑是否存在,不存在創(chuàng)建目錄
if [ ! -d "$uploadPath" ]; then
echo "mkdir ${uploadPath}"
mkdir -p "${uploadPath}"
fi
if [ -d "$baseJar" ]; then
mv -f ${baseJar} ${bakJar}
fi
# 移動上傳包到工作區(qū)
if [ -d "$uploadJar" ]; then
mv -f ${uploadJar} ${baseJar}
fi
# 查看啟動進程
pid=`ps -ef|grep ${fileName}.jar | grep -v grep | awk '{print $2}'`
echo "舊進程id:${pid}"
echo "e"
# 殺死進程
kill -9 $pid
# 重啟進程
if [ -e "$baseJar" ]; then
echo "開始啟動此程序..."
source /etc/profile nohup java -jar ${fileName}.jar > ${logName} 2>&1 &
tail -f ${logName}
pIdNew=`ps -ef|grep ${fileName}.jar | grep -v grep | awk '{print $2}'`
echo "${fileName} 啟動成功,pil:${pIdNew}..."
else
echo "${fileName}.jar 不存在,請檢查..."
fi
執(zhí)行打包上傳命令
mvn clean package wagon:upload-single wagon:sshexec
注意
項目部署后可能會無法啟動,我碰到過是找不到主類
解決辦法:
在buidl中maven打包插件中加入配置指定主類
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.androidserver.server.Main(主類全路徑)</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
windows復制腳本到linux不能執(zhí)行,需要修改格式為unix
修改腳本格式命令:
vim xxx.sh
后
:set ff=unix
學習記錄,可能會有錯誤,歡迎指正