重点感谢:
https://github.com/core-lib/xjar-maven-plugin
主要内容在以上链接中
下面是依据个人环境情况对项目加密过程
环境 : JDK 1.7 +
步骤
<!-- 设置 jitpack.io 插件仓库 -->
<pluginRepository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</pluginRepository>
<plugin>
<groupId>com.github.core-lib</groupId>
<artifactId>xjar-maven-plugin</artifactId>
<version>4.0.1</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
<phase>package</phase>
<configuration>
<!-- 需要加密的资源路径 -->
<includes>/XXX/XXX/transfer/service/*.class</includes>
<excludes>
<!-- 不需要加密的资源 -->
<exclude>*/resources/**</exclude>
</excludes>
<!-- 源jar所在目录 -->
<sourceDir>target\</sourceDir>
<!-- 源jar名称 -->
<sourceJar>transfer-1.0.jar</sourceJar>
<!-- 目标jar存放目录 -->
<targetDir>target\test2</targetDir>
<!-- 目标jar名称 -->
<targetJar>transferNew.jar</targetJar>
</configuration>
</execution>
</executions>
</plugin>
在terminal端输入命令
mvn clean package -Dxjar.password=io.xjar
mvn clean install -Dxjar.password=io.xjar -Dxjar.targetDir=/directory/to/save/target.xjar
在CMD输入命令:go build xjar.go
window启动命令:xjar.exe java –jar transferNew.jar
linux启动命令: nohup ./xjar java –jar transferNew.jar >>/usr/local/test/nohup.log 2>&1 &
由于在 Spring Boot 项目中使用了JPA且实现为Hibernate时,Hibernate自己解析加密后的Jar文件导致无法正常启动的问题
方案:
1.clone本项目,使用 mvn clean package 编译出 xjar-agent-hibernate-${version}.jar 文件
2.采用 java -javaagent:xjar-agent-hibernate-${version}.jar -jar your-spring-boot-app.jar 命令启动
下载链接:xjar-agent-hibernate: XJar Adapter For Spring Boot With Hibernate (gitee.com)
window启动命令:
xjar.exe java -javaagent:xjar-agent-hibernate-v1.0.0.jar –jar transferNew.jar
linux启动命令:
nohup ./xjar java -javaagent:xjar.jar -jar transferNew.jar >>/usr/local/test/nohup.log 2>&1 &