我有一個項目是另一個項目的一部分。我正在使用maven構建過程來製作項目的jar包。我用ProGuard來混淆它。我有一些處理UI請求的控制器。ProGuard:混淆瓶子不工作,但未混淆罐子正在工作
問:我的問題是un-obfuscated jar正在工作。所有控制器都被擊中,但混淆的jar不工作(沒有控制器被擊中)。混淆的問題是什麼?
我servlet.xml中:
<context:component-scan base-package="myPackage.controllers" />
<mvc:annotation-driven />
樣品控制器代碼:與ProGuard的
我的pom.xml的內容:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.13</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.2.1</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<maxMemory>576m</maxMemory>
<obfuscate>true</obfuscate>
<!-- File with proguard configuration -->
<proguardInclude>${basedir}/proguard.conf</proguardInclude>
<libs>
<lib>${java7home}/jre/lib/rt.jar</lib>
<lib>${java7home}/jre/lib/jce.jar</lib>
</libs>
</configuration>
</plugin>
我ProGuard.conf文件內容:
-dontnot
-dontwarn
-dontshrink
-dontoptimize
-keep public class * { public protected *;}
-keep class myPackage.controllers.** { public protected *;}
-keepattributes SourceFile,Signature,LineNumberTable,Exceptions, *Annotation*
-keepparameternames
-printmapping '${logFilesPath}/${project.artifactId}.log'
我檢查了我的混淆jar,所有註釋都被保留。 另外在我的信息包中,我還有一些只有包級別訪問的類。所以那些也被混淆了。但是,所有具有RequestMappings的類都是公共的,並且不會被混淆。
我的運行環境:
1)的Java 1.7爲我的項目。 5.2.1
3)彈簧:4.0.9
4)傑克遜:1.9.11
但這個罐子是越來越放在項目,該項目於Java 1.82)ProGuard的版本上運行
(注:取消ofuscated罐子是工作,但混淆不在上述環境中工作)
當混淆的jar啓動時你收到任何錯誤嗎?你是否收到超時? – Zymus
沒有。它只是說閱讀和閱讀,然後準備輸出jar。我錯過了什麼?另外它需要.m2文件夾中的一些罐子。 – SuhasD