SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代碼
jar包加密
1、在啟動(dòng)類的pom.xml中加入classfinal-maven-plugin插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>net.roseboy</groupId>
<artifactId>classfinal-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<password>#</password> <!--啟動(dòng)密碼,#為空-->
<excludes>org.spring</excludes>
<packages>${groupId}</packages> <!--需要加密的包名,有多個(gè)使用逗號(hào)分隔-->
<cfgfiles>application.yml,spy.properties,ehcache.xml</cfgfiles> <!--需要加密的配置文件,有多個(gè)使用逗號(hào)分隔-->
<libjars>SuperDog.jar</libjars> <!--jar包lib目錄下要加密的jar依賴,有多個(gè)使用逗號(hào)分隔-->
<code></code> <!--機(jī)器碼,指定某個(gè)機(jī)器啟動(dòng)-->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>classFinal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2、在右側(cè)的maven工具欄中使用install,xxx-encrypted.jar是加密后的jar包

3、加密后的jar包不能直接運(yùn)行,要設(shè)置javaagent來(lái)啟動(dòng),啟動(dòng)過(guò)程中會(huì)解密
//無(wú)密碼啟動(dòng) java -javaagent:APF_AssetServer-encrypted.jar -jar APF_AssetServer-encrypted.jar //有密碼啟動(dòng) java -javaagent:APF_AssetServer-encrypted.jar='-pwd=密碼' -jar APF_AssetServer-encrypted.jar //增加其他參數(shù)啟動(dòng) java -javaagent:APF_AssetServer-encrypted.jar -jar -Xmx512m -Xms512m APF_AssetServer-encrypted.jar --spring.profiles.active=APF_AssetServer-encrypted
反編譯效果
class文件只能看到方法名、參數(shù)和注解,方法內(nèi)容被清空
配置文件變成空白


綁定機(jī)器啟動(dòng)
1、下載 classfinal-fatjar-1.2.1.jar
2、執(zhí)行 java -jar classfinal-fatjar-1.2.1.jar -C
3、將生成的機(jī)器碼,放到maven插件的code里

到此這篇關(guān)于SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot classfinal-maven-plugin加密Jar包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
elasticsearch的靈魂唯一master選舉機(jī)制原理分析
這篇文章主要為大家介紹了elasticsearch的靈魂唯一master選舉機(jī)制原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
mybatis配置mapper-locations位置的三種方式小結(jié)
這篇文章主要給大家介紹了關(guān)于mybatis配置mapper-locations位置的三種方式,Mybatis-Plus的初衷是為了簡(jiǎn)化開(kāi)發(fā),而不建議開(kāi)發(fā)者自己寫(xiě)SQL語(yǔ)句的,但是有時(shí)客戶需求比較復(fù)雜,需要的朋友可以參考下2023-08-08
Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟
這篇文章主要介紹了Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Spring Boot 校驗(yàn)用戶上傳的圖片文件(兩種方式)
圖片上傳是現(xiàn)代應(yīng)用中非常常見(jiàn)的一種功能,也是風(fēng)險(xiǎn)比較高的一個(gè)地方,惡意用戶可能會(huì)上傳一些病毒、木馬,本文給大家介紹兩種對(duì)圖片文件進(jìn)行校驗(yàn)的方法,感興趣的朋友一起看看吧2023-11-11
IntelliJ?IDEA中如何使用Checkstyle對(duì)Java代碼規(guī)范檢查
這篇文章主要介紹了IntelliJ IDEA中如何使用Checkstyle對(duì)Java代碼規(guī)范檢查的相關(guān)資料,checkstyle是提高代碼質(zhì)量,檢查代碼規(guī)范的很好用的一款工具,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-03-03
java中@Configuration使用場(chǎng)景
本文主要介紹了java中@Configuration使用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
多線程-lock與lockInterruptibly的區(qū)別及說(shuō)明
文章主要討論了Java中ReentrantLock的lock和lockInterruptibly方法的區(qū)別,以及AQS中的雙向鏈表設(shè)計(jì),lock方法不響應(yīng)中斷,而lockInterruptibly方法會(huì)響應(yīng)中斷,AQS的雙向鏈表設(shè)計(jì)使得線程管理更加高效和靈活,適用于高并發(fā)場(chǎng)景2025-02-02
Java語(yǔ)言通過(guò)三種方法實(shí)現(xiàn)隊(duì)列的示例代碼
這篇文章主要介紹了Java語(yǔ)言通過(guò)三種方法來(lái)實(shí)現(xiàn)隊(duì)列的實(shí)例代碼,數(shù)組模擬隊(duì)列,通過(guò)對(duì)定義的了解,發(fā)現(xiàn)隊(duì)列很像我們的數(shù)組,下面我們通過(guò)實(shí)踐給大家詳細(xì)介紹,需要的朋友可以參考下2022-02-02

