2013-02-20 20 views
8

के साथ संकलित कक्षाएं और जावाडोक शामिल हों, मैं एक जार फ़ाइल जेनरेट करने की कोशिश कर रहा हूं जिसमें हमारे उत्पाद के लिए एपीआई एसडीके होगा, इसलिए हमारे ग्राहक प्लगइन बना सकते हैं और इसे हमारे एपीआई के खिलाफ संकलित कर सकते हैं। हमारे एपीआई एसडीके जार के हिस्से के रूप में प्रदान किए जाने वाले सभी वर्ग/इंटरफेस को हमारे मुख्य उत्पाद में भी शामिल किया गया है, इसलिए एपीआई डेवलपर्स को हमारे एपीआई एसडीके जार को अपने प्लगइन जार में शामिल करने की आवश्यकता नहीं होगी। इसलिए, मैं अपने एपीआई एसडीके जार के आकार के बारे में चिंतित नहीं हूं। हालांकि, मैं प्लगइन डेवलपर्स के जीवन को आसान बनाना चाहता हूं और केवल एक जार फ़ाइल प्रदान करना चाहता हूं जिसमें संकलित कक्षाएं और जावाडोक दोनों शामिल हों (इसलिए डेवलपर ऑटो-पूर्ण सुविधा के हिस्से के रूप में इनलाइन टिप्पणियों को देख सकते हैं)।एक सिंगल जार बनाएं जिसमें मैवेन

हम Maven का उपयोग संकलित करने के लिए और मैं एपीआई एसडीके pom.xml के लिए निम्न विन्यास कहा:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <id>attach-javadoc</id> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

यह काम करता है, लेकिन इस दो जार फ़ाइलों उत्पन्न करता है - संकलित वर्गों के साथ एक और जावाडोक के साथ एक। इसके बजाय मैं सब कुछ के साथ सिर्फ एक जार फ़ाइल उत्पन्न करना चाहता हूं।

वर्तमान में हम इस परियोजना को संकलित करने के लिए मेवेन का उपयोग करते हैं, हालांकि हम अन्य निर्माण उपकरण का उपयोग करने के लिए स्वतंत्र हैं।

उत्तर

4

आप ऐसा कर सकते हैं:

  • तैयार पैकेज
  • को जावाडोक लक्ष्य देते हैं/वर्गों

जार प्लगइन सब कुछ के साथ एक जार पैदा करेगा लक्षित करने के लिए जावाडोक उत्पादन निर्देशिका तैयार लक्ष्य/कक्षाओं के अंदर (उत्पन्न जेवाडॉक्स सहित)

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <id>attach-javadoc</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>javadoc</goal> 
        </goals> 
        <configuration> 
         <reportOutputDirectory>${project.build.directory}/classes/</reportOutputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
2

क्या आपने Assembly plugin पर देखा है?

असेंबली प्लगइन एक जार प्रारूप असेंबली (जो वास्तव में एक MANIFEST.MF फ़ाइल के साथ एक ज़िप प्रारूप असेंबली) बना सकता है। आप अपनी असेंबली में कक्षा निर्देशिका और apidocs निर्देशिका दोनों निर्दिष्ट कर सकते हैं। वहां एक MANIFEST.MF चिपकाएं, और आप कर चुके हैं।

सौभाग्य से, javadoc:javadoc लक्ष्य generate-sources चरण में pom.xml की <build> अनुभाग में कॉन्फ़िगर करके निर्माण जीवन चक्र के हिस्से के रूप विन्यस्त किया जा सकता। इसका मतलब है कि जेनरेट किए गए जावा डॉक्स असेंबली प्लगइन के लिए उपलब्ध होना चाहिए।

+0

डेविड डब्ल्यू .: धन्यवाद! क्या आप कृपया उदाहरण दे सकते हैं कि मेरा pom.xml कैसा दिखता है (क्षमा करें - मेवेन मेरे लिए एक नया टूल है, इसलिए मैं अभी भी अपने सीखने के चरण में हूं)। –

+0

मैं एक डेवलपर नहीं हूं, लेकिन केवल एक मुख्यमंत्री हूं, और यह लंबे समय से रहा है क्योंकि मैंने मेवेन pom.xml फ़ाइलों को बनाया है। अगर मुझे याद है, विधानसभा विवरण के लिए एक अलग एक्सएमएल फ़ाइल है। मुझे याद नहीं है कि यह बाकी मेवेन की तुलना में बहुत कठिन है। सोनाटाइप शायद वहां सबसे अच्छी मेवेन पुस्तक है [लाइन पर] (http://www.sonatype.com/books/mvnref-book/reference/)। आप इसकी एक [हार्ड कॉपी] भी खरीद सकते हैं (http://shop.oreilly.com/product/9780596517335.do)। –

0

वैसे, तथ्य की बात के रूप में चीजें वास्तव में एक सरल तरीके से किया जा सकता है।

maven-source-plugin का उपयोग कर एक sources जार विरूपण साक्ष्य बनाएँ:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.2.1</version> 
     <executions> 
      <execution> 
      <id>attach-sources</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>jar-no-fork</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

इस तरह अपनी परियोजना अपने विरूपण साक्ष्य भंडार के सूत्रों को तैनात करेगा।

फिर अपने आईडीई के मेवेन कॉन्फ़िगरेशन में, आप बस स्रोत कलाकृतियों को डाउनलोड करना चालू कर सकते हैं, प्रभावी रूप से इसका अर्थ यह है कि आपके आईडीई में जावाडॉक्स होंगे, यदि निश्चित रूप से, आपके कोड में उचित टिप्पणियां हैं।

इस तरह आप अच्छी तरह से कलाकृतियों को अलग कर सकते हैं।

इसके अलावा, डेविड डब्ल्यू और बेन 75 के उत्तर भी वैध तरीके हैं।

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