一、spring-boot-maven-plugin插件
1. 作用:能夠將SpringBoot應用打包為可執行的jar或war文件,進行相應部署后即可啟動SpringBoot應用;
2. 構建目標
A. spring-boot:run ——> 運行SpringBoot應用;
B. spring-boot:repackage ——> 將mvn package生成的jar或者war重新打包成可執行文件,同時修改原文件名,增加.origin后綴;
二、Linux環境下jar包啟動
1. 啟動命令
命令行:nohup java -jar xxx.jar --spring.profiles.active=dev/test/prod > catalina.out 2>&1 &
參數解釋:A. xxx.jar代表完整的jar包名;
B. --spring.profiles.active=dev/test/prod是根據不同的環境部署值;
C. catalina.out指輸出的日志文件名;
D. 2>&1指輸出所有的日志文件;
E. &代表后台啟動,指ctrl+c不會退出程序;
2. 停止命令
命令行:kill -9 pid
參數解釋:kill用於刪除執行中的程序;
9代表強制刪除程序;
pid代表進程號;
3. 啟動腳本:sh web-admin.sh
#!/bin/bash PROJECT_PACKAGE=web-admin-0.0.1-SNAPSHOT.jar PATH_NAME=test/web-admin/web-admin # 刪除文件 rm -rf /project/web/jar/$PROJECT_PACKAGE # 拷貝文件 cp /var/lib/jenkins/workspace/$PATH_NAME/target/$PROJECT_PACKAGE /project/web/jar/ # 切換路徑 cd /project/web/jar/ pid=`ps -ef | grep $PROJECT_PACKAGE | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then # 殺死存在進程 kill -9 $pid fi # 避免項目啟動之后被Jenkins殺掉 BUILD_ID=dontKillMe # 執行 nohup java -jar $PROJECT_PACKAGE --spring.profiles.active=test >> /project/web/log/web-admin.log 2>&1 & # echo 命令用於向窗口輸出文本 echo "web-admin項目啟動成功!"
4. JVM參數
A. 開啟遠程調試:-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=28080,suspend=n 這些參數要放在java -jar中間;
-Xdebug:啟用調試;
-Xrunjdwp:加載JVM的JPDA參考實現庫;
server:Xrunjdwp參數(作為調試服務器運行);
transport:Xrunjdwp參數(建立socket鏈接);
address:Xrunjdwp參數(在28080端口監聽Socket連接);
suspend:Xrunjdwp參數(是否在調試客戶端建立連接之后啟動 VM)。
三、預防反編譯
1. 使用ProGuard插件實現代碼混淆
2. 使用xJar安全加密
A. 手動加密
B. maven插件加密
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- 加密jar包,防止反編譯 --> <plugin> <groupId>com.github.core-lib</groupId> <artifactId>xjar-maven-plugin</artifactId> <version>4.0.2</version> <executions> <execution> <phase>package</phase> <goals> <goal>build</goal> </goals> <configuration> <!-- 需要加密的資源路徑表達式 --> <includes> <include>com/ruhuanxingyun/dcy/**</include> <include>config/*</include> <include>mapper/**</include> <include>sh/*</include> <include>sql/*</include> </includes> <targetJar>${project.build.finalName}.x.jar</targetJar> </configuration> </execution> </executions> </plugin> </plugins> </build>
<!-- 配置插件倉庫 -->
<pluginRepositories>
<pluginRepository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</pluginRepository>
</pluginRepositories>
C. 編譯腳本:go build xjar.go,在Linux下得到xjar可執行文件,注意執行chmod 755 xjar,否則報運行權限不夠;
D. 打包:mvn clean install -Dxjar.password=io.xjar;
E. Linux啟動:nohup ./xjar java -jar xxx.x.jar --spring.profiles.active=dev/test/prod > catalina.out 2>&1 &;