網上找了一堆 不用浪費時間了 看官方網站 或者去google搜索 不知道怎麼google的去百度 老D 不得不說外國的月亮比較圓 底下的解決方案不是所有隻能打包jar 沒有混淆 混淆還須要另外 若有須要幫忙歡迎微信css
<!-- ProGuard混淆插件 --> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.11</version> <executions> <execution> <!-- 混淆時刻,這裏是打包的時候混淆 --> <phase>prepare-package</phase> <goals> <!-- 使用插件的什麼功能,固然是混淆 --> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <!-- 是否將生成的PG文件安裝部署 --> <attach>true</attach> <!-- 是否混淆 --> <obfuscate>true</obfuscate> <!-- 指定生成文件分類 --> <attachArtifactClassifier>pg</attachArtifactClassifier> <options> <!-- JDK目標版本1.7 --> <option>-target 1.7</option> <!-- 不作壓縮(刪除註釋、未被引用代碼) --> <option>-dontshrink</option> <!-- 不作優化(變動代碼實現邏輯) --> <option>-dontoptimize</option> <!-- 不跳過非公用類文件及成員 --> <option>-dontskipnonpubliclibraryclasses</option> <option>-dontskipnonpubliclibraryclassmembers</option> <!-- 優化時容許訪問並修改有修飾符的類和類的成員 --> <option>-allowaccessmodification</option> <!-- 使用獨特的混淆類的成員名稱來增長混淆 --> <option>-useuniqueclassmembernames</option> <!-- 不混淆全部包名,本人測試混淆後WEB項目問題實在太多,畢竟Spring配置中有大量固定寫法的包名 --> <option>-keeppackagenames</option> <!-- 不混淆全部特殊的類 --> <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option> <!-- 不混淆全部的set/get方法,畢竟項目中使用的部分第三方框架(例如Shiro)會用到大量的set/get映射 --> <!-- 這一句會薄報錯 --> <!-- <option>-keepclassmembers public class * {void set*(***);***get*();}</option> --> <!-- 不混淆測試包下的全部類名,且類中的方法也不混淆,可是屬性混淆 --> <!-- <option>-keep class com.jikexueyuancrm.test.** { <methods>; --> <!-- }</option> --> <!-- 如下由於大部分是Spring管理的Bean,不對包類的類名進行混淆,但對類中的屬性和方法混淆 --> <option>-keep class cn.com..front.web.**</option> <option>-keep class cn.com..front.service.**</option> <!-- 不混淆model包中的全部類以及類的屬性及方法,實體包,混淆了會致使ORM框架及前端沒法識別 --> <option>-keep class cn.com..front.filter.** {*;}</option> <option>-keep class cn.com..base.** {*;}</option> <option>-keep class cn.com..front.dao.** {*;}</option> <option>-keep class cn.com..front.utils.** {*;}</option> <option>-keep class cn.com..front.mybatis.** {*;}</option> <option>-keep class cn.com..front.dto.** {*;}</option> <option>-keep class cn.com..job.** {*;}</option> <option>-keep class cn.com..pay.** {*;}</option> <option>-keep class cn.com..sms.** {*;}</option> </options> <outjar>classes</outjar> <!-- 添加依賴,這裏你能夠按你的須要修改,這裏測試只須要一個JRE的Runtime包就好了 --> <libs> <lib>${java.home}/lib/rt.jar</lib> <lib>${java.home}/lib/jsse.jar</lib> <lib>${java.home}/lib/jce.jar</lib> </libs> <!-- 對什麼東西進行加載,這裏僅有classes,畢竟你也不可能對配置文件及JSP混淆吧 --> <injar>classes</injar> <!-- 輸出目錄 --> <outputDirectory>${project.build.directory}</outputDirectory> </configuration> </plugin>
<plugin> <groupId>com.samaxes.maven</groupId> <artifactId>minify-maven-plugin</artifactId> <version>1.7.5</version> <executions> <execution> <id>assets-minify</id> <phase>process-resources</phase> <configuration> <!-- css --> <cssEngine>YUI</cssEngine> <cssSourceDir>assets</cssSourceDir> <cssSourceIncludes> <cssSourceInclude>styles/**/**.css</cssSourceInclude> </cssSourceIncludes> <!-- <cssSourceExcludes> <cssSourceExclude>vendors/**.css</cssSourceExclude> </cssSourceExcludes> --> <!-- js --> <jsEngine>CLOSURE</jsEngine> <jsSourceDir>assets</jsSourceDir> <jsSourceIncludes> <jsSourceInclude>scripts/**/**.js</jsSourceInclude> </jsSourceIncludes> <!-- <jsSourceExcludes> <jsSourceExclude>vendors/**/*.min.js</jsSourceExclude> </jsSourceExcludes> --> <!-- others --> <skipMerge>true</skipMerge> <nosuffix>true</nosuffix> <verbose>false</verbose> </configuration> <goals> <goal>minify</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <warSourceExcludes>assets/styles/**/**.css,assets/scripts/**/**.js</warSourceExcludes> <warName>${project.artifactId}</warName> </configuration> </plugin> </plugins>