2010-03-05 15 views
12

मैं मैवेन 2 का उपयोग करने की कोशिश कर रहा हूं लेकिन मेरे बच्चे की परियोजनाओं को मूल परियोजना नहीं मिल सकती है।Maven2 रिश्तेदार पथ से माता-पिता को नहीं ढूंढ सकता

--parent 
    --pom.xml 
--child 
    --pom.xml 

बाल pom.xml फ़ाइल की तरह दिखता है:

निर्देशिका संरचना इस प्रकार है

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>myapp</artifactId> 
    <version>${app.version}</version> 
    <relativePath>.../parent/pom.xml</relativePath> 
</parent> 

हालांकि जब मैं Maven का उपयोग तो यह और भी रिश्तेदार पथ में देखने के लिए नहीं लगता है, ऐसा लगता है कि इसे मैवेन रिपोजिटरी से आजमाएं और डाउनलोड करें। यह स्पष्ट रूप से रेपो में नहीं है। मैं इसे सापेक्ष पथ को देखना चाहता हूं। मैं क्या गलत कर रहा हूं? यहाँ त्रुटि संदेश है:

[INFO] Scanning for projects... 
Downloading: http://repo1.maven.org/maven2/com/mycompany/app/myapp/${app.version}/myapp- 
${app.version}.pom 
[INFO] Unable to find resource 'com.mycompany.app:myapp:pom:${app.version}' in reposit 
ory central (http://repo1.maven.org/maven2) 
[INFO] ------------------------------------------------------------------------ 
[ERROR] FATAL ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error building POM (may not be this project's POM). 


Project ID: null:web:jar:null 

Reason: Cannot find parent: com.mycompany.app:myapp for project: null:web:jar:null for 
project null:web:jar:null 

उत्तर

16

आप मूल संस्करण के लिए संपत्ति का उपयोग नहीं कर सकते - यह मेल खाना चाहिए। इस समय निर्माण के लिए बाद की तारीख में पुनरुत्पादन की आवश्यकता होती है। लोगों ने इस मुद्दे को https://issues.apache.org/jira/browse/MNG-624

1

यह होना चाहिए:

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>myapp</artifactId> 
    <version>${app.version}</version> 
    <relativePath>../parent/pom.xml</relativePath> 
</parent> 
+0

यह कोई मुद्दा नहीं है (केवल एक टाइपो आईएमओ था), यह काम नहीं करता है। –

+0

यह अभी भी मदद की है, मेवेन दस्तावेज़ ऑनलाइन (http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Example_2) वास्तव में उपयोग करता है ... जो मुझे लगता है कि उनकी वेबसाइट – vagabond

11

मेरी जानकारी के लिए, चर विस्तार पेरेंट तत्व में काम नहीं करता है (यह चारों ओर पृष्ठभूमि के लिए MNG-624 और टिप्पणियों देखें), आप की जरूरत संस्करण स्पष्ट रूप से सेट करने के लिए:

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>myapp</artifactId> 
    <version>1-SNAPSHOT</version><!-- or whatever version you use --> 
    <relativePath>../parent/pom.xml</relativePath> 
</parent> 

वैसे, आप अपने सभी मॉड्यूल के लिए एक ही संस्करण उपयोग करना चाहते हैं, तो आप बस अपने बच्चे को इस परियोजना में यह वारिस चाहिए अर्थात् नहीं इसे ओवरराइड (${app.version} आईएमओ के लिए कोई वास्तविक आवश्यकता नहीं है), दूसरी तरफ नहीं।

+0

पर एक टाइपो है Pom.xml पथ को इंगित करने के बाद मेरे लिए काम किया। –

1

पर इस ट्रैक कर रहे हैं आप पैकेजिंग प्रकार और/या संस्करण आईडी मिलान नहीं हो सकता है। मुझे आपके जैसा ही त्रुटि मिली लेकिन पैकेजिंग प्रकार के साथ खेला और इसे काम करने के लिए मिला। निम्नलिखित कोशिश करें।

निम्नलिखित पैरेंट pom.xml का खंड है। पैकेजिंग प्रकार "पोम" है।

... 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>parent</artifactId> 
    <version>${app.version}</version> 
    <packaging>pom</packaging> 

बच्चे की pom.xml: मैं साझा करने के लिए माता पिता के अनुप्रयोग के लिए किसी भी कोड, केवल एक आम pom.xml जरूरत नहीं है। यह एक webapp तो पैकेजिंग है प्रकार "युद्ध" है:

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>parent</artifactId> 
    <version>${app.version}</version> 
    <relativePath>../parent/pom.xml</relativePath> 
    <packaging>war</packaging> 
</parent> 
1

समस्या संभावना है कि आप .../ बजाय ../ प्रयोग किया जाता है।

+0

(आपने ".. /" का अर्थ है ".. /" के बजाय – tzrtzer

7

मैं क्या पाया है कि आप तो उसके बाद वाले बच्चे poms रिपोजिटरी से उन्हें पढ़ सकते हैं पहले माता-पिता पोम स्थापित करने के लिए की जरूरत है, था।

उपयोग: mvn -N install

इस दूसरे बच्चे poms चलने के बिना माता पिता पोम स्थापित हो जाएगा।

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