2012-05-11 11 views
40

में प्लगइन्स मैंने अभी मेवेन का उपयोग करना शुरू किया और मैंने पढ़ा कि प्लगइन्स अतिरिक्त घटक हैं जिनका उपयोग किया जा सकता है।
pom.xml फ़ाइल का एक विशिष्ट संरचनामेवेन और पीओएम.एक्सएमएल

<project> 
    <groupId>org.koshik.javabrains</groupId> 
    <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>JarName</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
</project> 

प्रश्न है: मैं एक plugin टैग कहां लगाना चाहिए? जैसे कि निम्न:

<plugin> 
    <groupId>org.jibx</groupId> 
    <artifactId>jibx-maven-plugin</artifactId> 
    <version>1.2.4</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>bind</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

निर्भरता से पहले या dependency टैग के बाद? फर्क पड़ता है क्या?

उत्तर

40
<project> 
    <groupId>org.koshik.javabrains</groupId> 
    <artifactId>JarName</artifactId> (A fldernamed JarName was created) 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>JarName</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.jibx</groupId> 
       <artifactId>jibx-maven-plugin</artifactId> 
       <version>1.2.4</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>bind</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

तुम भी <profile> की <build> खंड में प्लगइन्स जगह अगर आप Maven प्रोफ़ाइल का उपयोग कर सकते हैं। आदेश कोई फर्क नहीं पड़ता।

+0

आपको बहुत टैंक। –

2

आप दो अन्य <plugins></plugins> टैग के बीच pom.xml फ़ाइल में कहीं भी अपना दूसरा स्निपेट डाल सकते हैं।

4

<plugin><plugins> अनुभाग में रखा जाना चाहिए जिसे <build> या <pluginManagement> अनुभाग में रखा जाना चाहिए। <dependency> या <build> अनुभाग का आदेश कोई फर्क नहीं पड़ता।

pom.xml के बारे में पूरी संदर्भ यहाँ है: http://maven.apache.org/pom.html

3

आप निर्माण आप नीचे दिए गए संरचना का उपयोग कर सकते के लिए प्लगइन का उपयोग करना चाहते हैं।

<project> 
<build> 
    <plugins> 
    </plugins> 
</build> 
</project> 
+0

ठीक है। आप उपरोक्त फ़ाइल में प्लगइन टैग जोड़ने के लिए मतलब है, मुझे बस जोड़ने की आवश्यकता है .. और टैग जोड़ने की कोई आवश्यकता नहीं है क्योंकि यह पहले से ही शीर्ष पर मौजूद है। क्या मैं सही हूँ ? – Rajeshwar

+0

हां आपको फिर से परियोजना जोड़ने की आवश्यकता नहीं है। मैंने अभी पूरी संरचना दी है। –

2

पीओएम में सेक्शन ऑर्डर कोई फर्क नहीं पड़ता। आम तौर पर, मेवेन में बिल्ड प्लगइन्स और रिपोर्टिंग प्लगइन्स हैं। आपका केस बिल्ड प्लगइन का उपयोग करना है, इसलिए आपको <plugin> ब्लॉक को <project><build><plugins>... सेक्शन में रखना होगा।

प्लगइन के बारे में कुछ मूलभूत बातें के लिए this पर देखें।

5

दो महत्वपूर्ण बिंदुओं

पर एक देर से स्पष्टीकरण कहाँ जगह plugin
एक plugin वास्तव में build/plugins अनुभाग के भीतर अधिकांश मामलों में शामिल किया जाना चाहिए, लेकिन वहाँ है एक महत्वपूर्ण अंतर इसे plugins के भीतर pluginManagement/plugins के अंदर रखने के विरुद्ध इसे रखने के बीच।

यह गलतफहमी अक्सर Maven में एक गैर लागू प्लगइन का कारण है या एक कठिन समस्या निवारण: यदि वे एक execution या निर्दिष्ट build/plugins तहत

  • प्लगइन्स, सीधे डिफ़ॉल्ट Maven निर्माण का हिस्सा हैं अगर वे डिफ़ॉल्ट निर्माण के लिए कुछ कॉन्फ़िगर (देखें नीचे) के तहत build/pluginManagement/plugins डिफ़ॉल्ट Maven निर्माण की नहीं necessarely हिस्सा हैं
  • प्लगइन्स, वह यह है कि मैं एक प्रबंधन है, यह maven के लिए एक संकेत है: यह आप इस प्लगइन का उपयोग करने के लिए होता है, तो कृपया इस प्रबंधन में संस्करण, विन्यास, निष्पादन, जो मैं निर्दिष्ट करता हूं, का उपयोग करें।

    लेकिन का उपयोग करने के लिए क्या होता है? मतलब: यदि एक ही प्लगइन build/plugins अनुभाग में मौजूद है, तो इस प्रबंधन को लागू करें (और केवल तभी प्रभावी होगा); या यदि प्लगइन को मावेन द्वारा डिफ़ॉल्ट रूप से बुलाया जाता है, तो इसे भी लागू करें।

    लेकिन प्लगइन डिफ़ॉल्ट रूप से कैसे लागू किया जाता है? यह मैवेन के पीछे मुख्य दर्शन का हिस्सा है: कॉन्फ़िगरेशन पर सम्मेलन। सम्मेलन द्वारा, जब आप एक निश्चित packaging (डिफ़ॉल्ट jar निर्दिष्ट करते हैं, लेकिन उदाहरण के लिए यह war हो सकता है), तो आप कुछ प्लगइन्स का आह्वान करना चाहते हैं। jar बनाने के लिए, by defaultmaven-jar-plugin का आह्वान करें; war, by default बनाने के लिए maven-war-plugin और अन्य पर भी शामिल करें। इसलिए, यदि आप प्लगइन के लिए build/pluginManagement/plugin में प्लगइन कॉन्फ़िगरेशन निर्दिष्ट करते हैं जिसमें मेवेन बिल्ड के लिए डिफ़ॉल्ट बाध्यकारी है, तो इसका भी उपयोग किया जाएगा।


आदेश pom.xml फ़ाइल के भीतर वर्गों के आदेश के संबंध में, एक और स्पष्टीकरण की की जरूरत है: यह वास्तव में अधिकांश मामलों में अप्रासंगिक है, wihtin build/pluginsplugin तत्व की लेकिन आदेश खंड महत्वपूर्ण हो सकता है। चूंकि मेवेन 3.0.3 (MNG-2258), उसी मेवेन चरण से जुड़े विभिन्न प्लगइन निष्पादन pom.xml फ़ाइल में घोषणा के उनके आदेश में लागू किए जाएंगे। इस मामले में आदेश महत्वपूर्ण है, क्योंकि यह निर्माण के व्यवहार को प्रभावित कर सकता है।

इसके अतिरिक्त, dependency घोषणाओं के आदेश भी Dependency Mediation की ओर आपके निर्माण को प्रभावित कर सकते हैं, यानी, पहली घोषित निर्भरता एक पारस्परिक निर्भरता के खिलाफ संघर्ष के मामले में जीत जाती है। तो, एक बार फिर, कुछ मामलों में ऑर्डरिंग महत्वपूर्ण है

<project> 
    <modelVersion/> 

    <parent/> 

    <groupId/> 
    <artifactId/> 
    <version/> 
    <packaging/> 

    <properties/> 

    <dependencyManagement/> 
    <dependencies/> 

    <build/> 

    <reporting/> 

    <profiles/> 
</project> 

:,

इतना ही नहीं बल्कि हालांकि आदेश pom.xml फ़ाइल के अन्य वर्गों के लिए महत्वपूर्ण नहीं है, अच्छी आदत एक सरलीकृत संस्करण के रूप में, घोषणा के इस आदेश का पालन अधिकारी Maven recommendations पालन करने के लिए है और,

mvn com.github.ekryd.sortpom:sortpom-maven-plugin:2.5.0:sort \ 
    -Dsort.keepBlankLines -Dsort.predefinedSortOrder=recommended_2008_06 

: sortpom-maven-plugin भी स्वतः ही इस मानक आदेश लागू करने के लिए, बस चिंतित pom.xml फ़ाइल पर निम्न लागू किया जा सकता है

आगे पढ़ने के लिए: