一、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 &;