2012-06-07 20 views
18

私はProGuardをMavenのビルドプロセスの一部にしようとしています。問題は、正式なMavenプラグインがJava 7をサポートしていないProGuard 4.3を使用していることです。代わりにProguard 4.8を使用する簡単な方法はありますか?ProGuard + Java with Maven 7

プラグインの依存関係を指定しようとしましたが、ProGuardがMaven-modules(proguard-base、proguard-parentなど)の新しい構造を持っているようです。私の現在のポンはどのように見えるのですか:

<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やそのプラグインについて知らない。 –

答えて

7

オリジナルのフォークproguard-maven-pluginがあります。それはgit-hubedです。 how you do itをご覧ください。

Hereは、私たちがどのようにそれを行うのか最新の例があります。 プロファイルは必要ありません。

23

com.github.wvengenからproguard-maven-pluginを使用します。別の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のプロジェクトのために私はアンドロイド-のmaven-pluginのは、ProGuardの難読化自体を扱うので、ProGuardの-のmaven-pluginのような専用ProGuardのプラグインを使用していない、より良いビルドに統合されていますプロセスAndroid用

+0

これは、Java 7で使用されている4.9バージョンのため動作します –