2012-06-07 3 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 등)에 대한 새로운 구조를 갖고있어 플러그인에서 버전> 4.4를 사용할 수 없습니다. 현재 포켓은 다음과 같습니다.

<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 자체 (및 해당 항아리)의 구조는 변경되지 않았으므로 그 측면에서 업그레이드는 간단해야합니다. 나는 메이븐이나 그 플러그인에 대해 몰라. –

답변

23

나는 com.github.wvengen에서 proguard-maven-plugin을 사용합니다. groupId과 다릅니다. 그렇게하면 최신 proguard-base 이슈를 사용할 수 있습니다. 둘 다 Maven Central에 있습니다. 여기 내 pom.xml 파일에서 난독 화 -베이스 부분이 지금 보이는 방법은 다음과 같습니다

부모의 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 : 내 안드로이드 프로젝트를 위해 나는 안드로이드 - 받는다는 - 플러그인이 ProGuard에서 난독 자체를 처리하기 때문에 난독 화 - 받는다는 - 플러그인과 같은 전용 Proguard와 플러그인을 사용하지 않는, 그리고 더 나은 빌드에 통합되어 절차 Android 용.

+0

java 7에 사용되는 4.9 버전 때문에이 기능이 작동합니다. –