某些场景下,希望发布的包是已经混淆过的,防止repo中出现未混淆jar包,同时,也方便后续开发依赖测试最实际的效果,即直接使用已混淆的包作为依赖。
<!--混淆编译-->
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.11</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<attachArtifactClassifier></attachArtifactClassifier>
<!-- attach 的作用是在 install 与 deploy 时将生成的 pg 文件也安装与部署 -->
<options> <!-- 详细配置方式参考 ProGuard 官方文档 -->
<!--<option>-dontobfuscate</option>-->
<option>-ignorewarnings</option> <!--忽略所有告警-->
<option>-dontshrink</option> <!--不做 shrink -->
<option>-dontoptimize</option> <!--不做 optimize -->
<option>-dontskipnonpubliclibraryclasses</option>
<option>-dontskipnonpubliclibraryclassmembers</option>
<option>-repackageclasses com.mcrmb</option>
<option>-keep class **.package-info</option>
<option>-keepattributes SourceFile,LineNumberTable,*Annotation*</option>
<option>-keep class com.xxx.xxx { *;}</option>
<!--option>-outjars out.jar</option-->
</options>
<outjar>../pg/</outjar>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
</libs>
</configuration>
</plugin>
<!--发布(install)混淆后的版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>com.xxx</groupId>
<artifactId>XXXX</artifactId>
<version>${version}</version>
<packaging>jar</packaging>
<file>pg/${artifactId}-${version}.jar</file>
</configuration>
</execution>
</executions>
</plugin>