2012-06-07 15 views
18

मैं अपने मेवेन बिल्ड प्रक्रिया के प्रोगार्ड हिस्से को बनाने की कोशिश कर रहा हूं। समस्या यह है कि आधिकारिक मेवेन प्लगइन ProGuard 4.3 का उपयोग कर रहा है, जो जावा 7 का समर्थन नहीं करता है। प्लगइन को प्रोजेवार्ड 4.8 के बजाय प्लगइन बनाने का कोई आसान तरीका है?जावा के साथ प्रोगार्ड + मेवेन 7

मैंने प्लगइन के लिए निर्भरता निर्दिष्ट करने का प्रयास किया है, लेकिन प्रोगार्ड में मेवेन-मॉड्यूल (प्रोगार्ड-बेस, प्रोगार्ड-पैरेंट इत्यादि) के लिए एक नई संरचना है, इसलिए प्लगइन किसी भी संस्करण> 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

प्रोगार्ड की संरचना (और इसके जार) की संरचना नहीं बदली है, इसलिए उस तरफ से उन्नयन छोटा होना चाहिए। मैं हालांकि मैवेन या उसके प्लगइन के बारे में नहीं जानता। –

उत्तर

7

मूल proguard-maven-plugin का एक कांटा है। यह git-hubed है। कृपया how you do it देखें।

Here नवीनतम उदाहरण आता है कि हम इसे कैसे करते हैं। कोई और प्रोफ़ाइल आवश्यक नहीं है।

23

मैं com.github.wvengen से प्रोगार्ड-मेवेन-प्लगइन का उपयोग करता हूं। विभिन्न groupId पर ध्यान दें। इस तरह से मैं नवीनतम proguard-base आर्टिफैक्ट 5.0 का उपयोग कर सकता हूं। दोनों मेवेन सेंट्रल में हैं। यहाँ कैसे मेरी 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> 

अद्यतन: मेरे Android परियोजनाओं के लिए मैं ProGuard-Maven-प्लगइन की तरह एक समर्पित Proguard प्लगइन का उपयोग नहीं के बाद से android-Maven-प्लगइन ProGuard कहानियो ही संभालती है, और निर्माण में बेहतर एकीकृत है प्रक्रिया एंड्रॉइड के लिए एस है।

+0

यह जावा 7 के लिए उपयोग किए जाने वाले 4.9 संस्करण की वजह से काम करता है –

संबंधित मुद्दे