2010-02-03 12 views
12

मैवेन 2.2.1 में एक बाल परियोजना में एक (पैरेंट) pom.xml की निर्भरताओं का उत्तराधिकारी होना चाहता हूं; यानी परियोजना विरासत का उपयोग करें। ऐसा लगता है कि इस मामले में डिफ़ॉल्ट पैकेजिंग प्रकार को jar से pom में बदलना आवश्यक है।क्या प्रोजेक्ट एग्रीगेशन (मल्टीमॉड्यूल) का उपयोग नहीं करते समय पैकेजिंग प्रकार 'पोम' आवश्यक है?

हालांकि, the Maven2 documentation यह नहीं है कि पैकेजिंग प्रकार pom प्रोजेक्ट एकत्रीकरण के लिए आवश्यक है, यानी मल्टीमुड्यूल प्रोजेक्ट जो सबमिड्यूल का उपयोग करते हैं, लेकिन परियोजना विरासत के लिए नहीं?

Project ID: example:example-child 

Reason: Parent: example:example-parent:jar:1 
of project: example:example-child has wrong packaging: jar. 
Must be 'pom'. for project example:example-child 

अन्य दूसरी ओर, निम्नलिखित प्रविष्टि के साथ:

<project> 
<modelVersion>4.0.0</modelVersion> 
<groupId>example</groupId> 
<artifactId>example-parent</artifactId> 
<version>1</version> 

<dependencies> 
    <dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.14</version> 
    </dependency> 
</dependencies> 
</project> 

<project>  
<parent> 
    <groupId>example</groupId> 
    <artifactId>example-parent</artifactId> 
    <version>1</version> 
</parent> 

<modelVersion>4.0.0</modelVersion> 
<groupId>example</groupId> 
<artifactId>example-child</artifactId> 
</project> 

लेकिन अगर आप ऊपर विन्यास के साथ Maven (जैसे mvn clean) कहते हैं, आपको कोई त्रुटि मिलती

<project> 
... 
<packaging>pom</packaging> 
... 
</project> 

माता-पिता pom.xml में, किसी भी त्रुटि के बिना मेवेन को निष्पादित किया जा सकता है।

क्या मेवेन का यह व्यवहार सही है?

उत्तर

10

POM Reference की Inheritance अनुभाग में दस्तावेज़ीकृत के रूप में:

The packaging type required to be pom for parent and aggregation (multi-module) projects.

तो Maven के व्यवहार मेरे लिए सही लगता है (और त्रुटि संदेश अच्छी तरह से स्वयं को समझा है)।

0

पास्कल द्वारा नोट किया गया है, व्यवहार सही है।

यदि आप अभी भी मॉड्यूल के बीच निर्भरताओं को साझा करने के साधनों की तलाश में हैं, तो आप एक पोम में निर्भरता को निर्भर करते हुए विचार कर सकते हैं, और फिर आपके मॉड्यूल दोनों नए "निर्भरता" पोम पर निर्भर करते हैं। अधिक जानकारी के लिए

Maven Book Section 3.6.1 देखें।

2

यदि आप केवल निर्भरताओं का उत्तराधिकारी बनना चाहते हैं तो मुझे नहीं लगता कि इसे 'पोम' टाइप करने की आवश्यकता है। आप इसे जार कर सकते हैं और इसे केवल उस परियोजना की निर्भरता के रूप में निर्दिष्ट कर सकते हैं जो आपके बच्चे के रूप में है। हालांकि आपके पास माता-पिता/बाल संबंध नहीं होंगे जो आपके माता-पिता परियोजना को 'पोम' के अलावा अन्य प्रकार से रोकता है।

स्पष्ट होने के लिए, आप अपनी सभी निर्भरताओं (ट्रांजिटिव निर्भरताओं) की निर्भरताओं का उत्तराधिकारी प्राप्त करते हैं।

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