2012-06-07 37 views
18

我正在嘗試使ProGuard成爲我們的Maven構建過程的一部分。問題是官方的Maven插件正在使用ProGuard 4.3,它不支持Java 7.是否有任何簡單的方法可以讓插件使用Proguard 4.8?ProGuard + Maven與Java 7

我試過指定插件的依賴關係,但ProGuard似乎有一個Maven模塊(proguard-base,proguard-parent等)的新結構,所以插件不能使用任何版本> 4.4。以下是我目前的POM的外觀:

<plugin> 
       <groupId>com.pyx4me</groupId> 
       <artifactId>proguard-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>proguard</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <proguardVersion>4.8</proguardVersion> 
        <obfuscate>true</obfuscate> 
        <options> 
         <option>-allowaccessmodification</option> 
         <option>-keep public class com.degoo.ui.ClientBackendStarter { public *; public static *; }</option> 
        </options> 
        <injar>${project.build.finalName}.jar</injar> 
        <outjar>${project.build.finalName}-small.jar</outjar> 
        <outputDirectory>${project.build.directory}</outputDirectory> 
        <libs> 
         <lib>${java.home}/lib/rt.jar</lib> 
         <lib>${java.home}/lib/jsse.jar</lib> 
        </libs> 
        <addMavenDescriptor>false</addMavenDescriptor> 
       </configuration> 
       <dependencies> 
        <dependency> 
         <groupId>net.sf.proguard</groupId> 
         <artifactId>proguard</artifactId> 
         <version>4.8</version> 
         <scope>runtime</scope> 
        </dependency> 
       </dependencies> 
      </plugin> 

有什麼建議嗎?

+0

ProGuard本身(及其罐子)的結構沒有改變,所以從這一方面來說,升級應該是微不足道的。儘管我不知道Maven或其插件。 –

回答

23

我使用com.github.wvengen的proguard-maven插件。請注意不同的groupId。這樣我可以使用最新的proguard-base神器5.0。兩者都在Maven Central。下面是我的pom.xml ProGuard的基座部分的外觀現在:

家長的pom.xml:

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>com.github.wvengen</groupId> 
       <artifactId>proguard-maven-plugin</artifactId> 
       <version>2.0.8</version> 
       <dependencies> 
        <dependency> 
         <groupId>net.sf.proguard</groupId> 
         <artifactId>proguard-base</artifactId> 
         <version>5.0</version> 
         <scope>runtime</scope> 
        </dependency> 
       </dependencies> 
      </plugin> 
[...] 

下面是從我的孩子的pom.xml休息,但你可能要修改:

<build> 
    <plugins> 
     <plugin> 
      <groupId>com.github.wvengen</groupId> 
      <artifactId>proguard-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>process-classes-with-proguard</id> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>proguard</goal> 
        </goals> 
        <configuration> 
         <maxMemory>256m</maxMemory> 
         <injar>classes</injar> 
         <libs> 
          <lib>${rt.jar.path}</lib> 
          <lib>${jsse.jar.path}</lib> 
         </libs> 
         <obfuscate>true</obfuscate> 
         <attach>true</attach> 
         <addMavenDescriptor>false</addMavenDescriptor> 
         <proguardInclude>${project.basedir}/proguard.conf</proguardInclude> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

UPDATE:對於我的Android項目,我不使用專用的Proguard的插件像proguard的,Maven的插件,因爲Android的Maven的插件處理ProGuard的混淆本身,並更好地集成到構建理線s爲Android。

+0

這是因爲用於java 7的4.9版本 –