2009-05-19 21 views
17

Maven'i ProGuard ile çalışıyorum.Maven, Proguard ve montaj sorunları

Ne elde etmek istiyorum şudur: Benim kaynak dosyaları üzerinde

  • çalıştırın ProGuard ve üretmek karartılmış sınıfları

  • bunu yürütmek böylece ana sınıf başvuran bir bildirim dosyası oluşturma kavanoz olarak

  • Tüm ilgili kitaplık kavanozlarını paketinden çıkarın ve hepsini içeren büyük bir kavanoz oluşturun. Bu dosya sadece .class ve .xml dosyalarına başvurmalıdır.

  • Çeşitli README.txt dosyalarını içeren .zip ve tar.gz dosyalarına bunları ekleyin. Şimdiye kadar böyle bir şey var

:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>com.class.path.MainClass</mainClass> 
        </manifest> 
       </archive> 
       <includes> 
        <include>**/*.class</include> 
        <include>**/*.xml</include> 
       </includes> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>com.pyx4me</groupId> 
      <artifactId>proguard-maven-plugin</artifactId> 
      <configuration> 
       <options> 
        <option>-allowaccessmodification</option> 
       </options> 
       <obfuscate>true</obfuscate> 
       <injar>classes</injar> 
       <outjar>${project.build.finalName}.jar</outjar> 
       <outputDirectory>${project.build.directory}</outputDirectory> 
       <proguardInclude>src/main/assembly/proguard.conf</proguardInclude> 
       <libs> 
        lib/rt.jar</lib> 
       </libs> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>proguard</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>assembly</goal> 
        </goals> 
        <configuration> 
         <descriptors> 
          <descriptor> 
           src/main/assembly/bin.xml 
          </descriptor> 
         </descriptors> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Ama hiçbir sevinç yaşıyorum. Kimse bana bu konuda belirsiz bir işaret verebilir mi? peşin

sayesinde Matt İşte

+0

Maven'in yok @starblue herhangi bir [meclis] kavramı. Ancak, '[assembly]' çok geçerli bir tanesidir. Bu yüzden, etiketler, kullanımları ile ilgili görüşünüzle uyuşmayan her şey hariç, benzersiz alan adları için hareket etmeyi bırak. Etiketler ayarlanmış, daha fazla kısıtlama eklemektedir. Maven için de geçerli olan bir etiketi kullanmamı yasaklamıyorum. Bu çok sinir bozucu. –

+0

http://maven.apache.org/plugins/maven-assembly-plugin/: Bu eklenti "derlemeler" oluşturur. – starblue

cevap

9

finalName-small.jar beni

<plugin> 
    <groupId>com.pyx4me</groupId> 
    <artifactId>proguard-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>proguard</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <obfuscate>true</obfuscate> 
     <options> 
      <option>-allowaccessmodification</option> 
      <option>-keep public class com.class.path.MainClass { 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> 
</plugin> 

nihai kavanoz için çalışmış yapılandırma olduğunu

+0

Paketleme aşaması aşamasını değil, paket aşamasını kullanmanın bir nedeni var mı? Süreç-sınıfları derlendikten sonra ancak paketin önünde çalışır, böylece hedef/sınıflara jarse girmeden erişebilirsiniz. – sal

+0

Bir süre oldu, ama hatırladığım kadarıyla eklentinin temelde proguard ürettiğini öğrendim, bu yüzden bir kavanoz almayı ve anter birisini yaymayı seviyor. Başka bir deyişle - birçok deneme ve hata, bu bir ... –

+0

Aynı projede birden fazla Maven modülleriyle nasıl başa çıkıyorsunuz? root pom.xml dosyasında eklentiyi çalıştırıyor musunuz, web modülü modül montajında ​​mı çalışıyorsunuz? – Alex