2013-05-30 35 views
6

Tôi cố gắng để sử dụng Maven với cấu hình sau:Maven với Proguard và lắp ráp Plugin

  1. Sử dụng maven-lắp ráp-plugin để xây dựng một JAR duy nhất với tất cả phụ thuộc (lắp ráp: duy nhất).
  2. Sử dụng plugin Proguard sau đó để cắt bớt tất cả các lớp không cần thiết khỏi các thư viện được bao gồm.

Tôi cần proguard để thu nhỏ kích thước của các phụ thuộc. Thư viện OpenIMAJ tôi đang sử dụng là rất lớn (100MB), và tôi chỉ cần một tập con nhỏ của nó.

Vấn đề là cấu hình Maven hiện tại của tôi chạy các trình cắm theo thứ tự ngược lại - Proguard chạy trước và xây dựng một JAR mà không có sự phụ thuộc.

phần Plugin của pom.xml của tôi:

<plugins> 
    <plugin> 
     <groupId>com.github.wvengen</groupId> 
     <artifactId>proguard-maven-plugin</artifactId> 
     <version>2.0.6</version> 
     <executions> 
      <execution> 
       <phase>package</phase> 
       <goals><goal>proguard</goal></goals> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
       <groupId>net.sf.proguard</groupId> 
       <artifactId>proguard-base</artifactId> 
       <version>4.9</version> 
       <scope>runtime</scope> 
      </dependency> 
     </dependencies> 
     <configuration> 
      <proguardVersion>4.9</proguardVersion> 
      <options> 
       <option>-verbose</option> 
       <option>-dontobfuscate</option> 
       <option>-dontoptimize</option> 
       <option>-keep class org.apache.** { *; }</option> 
       <option>-keep class no.** { *; }</option> 
      </options> 
      <libs> 
       <lib>${java.home}/lib/rt.jar</lib> 
       <lib>${java.home}/lib/jsse.jar</lib> 
      </libs> 
     </configuration> 

    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.0</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
    </plugin> 

    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <archive> 
       <manifest> 
        <mainClass>fully.qualified.MainClass</mainClass> 
       </manifest> 
      </archive> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     <executions> 
      <execution> 
       <id>make-assembly</id> <!-- this is used for inheritance merges --> 
       <phase>package</phase> <!-- bind to the packaging phase --> 
       <goals> 
        <goal>single</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

Trả lời

0

Cả Plugin được cấu hình để được thực hiện vào giai đoạn package. Vì vậy, tôi nghĩ Maven sẽ thực hiện chúng theo thứ tự chúng được định nghĩa trong pom. (Dường như vậy, kể từ khi Maven 3.0.3: http://www.mkyong.com/maven/maven-plugin-execution-order-in-same-phase/)

Bạn đã cố định nghĩa chúng theo thứ tự xung quanh chưa?

Nếu nó không hoạt động, có lẽ bạn nên thử chạy plugin lắp ráp trong giai đoạn prepare-package.

Tuy nhiên, câu trả lời của tôi chỉ đáng để đặt hàng, tôi không chắc chắn nếu điều đó sẽ giúp bạn với toàn bộ điều co lại.

Các vấn đề liên quan