2011-09-30 18 views
42

मेरे पास 1 शैल परियोजनाओं और 4 बच्चों के मॉड्यूल के रूप में मेरा मैवेन प्रोजेक्ट सेटअप है। जब मैं खोल बनाने की कोशिश करता हूं। मुझे मिलता है:मेवेन: गैर-सुलभ माता-पिता पीओएम

[INFO] Scanning for projects... 
[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error 
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2] 

यदि मैं एकमात्र मॉड्यूल बनाने का प्रयास करता हूं तो मुझे वही त्रुटि मिलती है जो मॉड्यूल 1 को प्रतिस्थापित करती है, जो भी मॉड्यूल था।

क्या वे सभी अपने पोम्स में माता-पिता का संदर्भ लेते हैं।

<groupId>converter</groupId> 
<artifactId>shell</artifactId> 
<version>1.0_A0</version> 
<packaging>pom</packaging> 
<name>shell</name> 


<modules> 
    <module>module1</module> 
    <module>module2</module> 
    <module>module3</module> 
    <module>module4</module> 
</modules> 

उत्तर

50

बस संदर्भ के लिए:

<parent> 
    <artifactId>shell</artifactId> 
    <groupId>converter</groupId> 
    <version>1.0_A0</version> 
</parent> 

यहाँ खोल पोम के प्रासंगिक भागों है।

मेवेन की खुशी।

मॉड्यूल के सापेक्ष पथ को ../pom.xml पर हल करना इसे हल किया गया।

parent तत्व में relativePath तत्व है जो आपको माता-पिता की निर्देशिका को इंगित करने की आवश्यकता है। यह ..

+11

हां।मेवेन का उपयोग करने के लिए आपको पता है कि आप क्या करते हैं, परीक्षण और त्रुटि आपको बहुत दूर नहीं ले जाएगी। दूसरी तरफ कई अच्छे संदर्भ उपलब्ध हैं। यह [एक] है (http://www.sonatype.com/books/mvnref-book/reference/)। –

+0

तो आपने यह '<सापेक्षपाथ> ..' 'के अंतर्गत जोड़ा है? – octavian

+0

मैंने इसे अपने सापेक्षपैथ मान पर इंगित किया है कि डिफ़ॉल्ट मान मैवेन रखता है .. – Will

6

वैकल्पिक कारण भी माता-पिता आर्टिफैक्ट भंडार से आता है जो pom.xml, आमतौर पर निजी भंडार से उपलब्ध नहीं है।

<repositories> 
    <repository> 
     <id>internal-repo</id> 
     <name>internal repository</name> 
     <url>https://my/private/repo</url> 
     <layout>default</layout> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 

मेरे मामले समस्या और भी जटिल ग्रहण की वजह से था में: समाधान pom.xml में है कि भंडार प्रदान करना था भंडार केवल विशेष प्रोफ़ाइल (<profiles><profile><id>activate-private-repo</id><repositories>...) और Maven जीयूआई ग्रहण में में सक्रिय था की अनुमति नहीं दी इस प्रोफाइल को Ctrl+Alt+P शॉर्टकट के माध्यम से सेट करने के लिए।

समाधान अस्थायी रूप से प्रोफ़ाइल के बाहर भंडार (बिना शर्त) घोषित करना था, Alt+F5 मेवेन अपडेट प्रोजेक्ट लॉन्च करना, प्रोफाइल सक्रिय करना और प्रोफ़ाइल में रिपोजिटरी घोषणा को वापस रखना था। यह बजाय ग्रहण बग है, मैवेन बग नहीं।

+0

वही स्थिति! निजी रेपो पोम में नहीं जोड़ा गया। – LoranceChen

10

यह निर्देशिका में सही settings.xml फ़ाइल डालकर भी तय किया जा सकता है।

+1

बिल्कुल मेरी समस्या हल हो गई, धन्यवाद !!! लेकिन इसे कुछ निर्देशिका में डालने से नहीं, लेकिन प्राथमिकताओं में ग्रहण को इंगित करना - मेवेन - उपयोगकर्ता सेटिंग्स। – Brain

1

यह सत्यापित करें कि आप बच्चे को poms में सही मान है

GroupId 
ArtefactId 
Version 

ग्रहण में, उदाहरण के लिए, आप इसके लिए खोज कर सकते हैं: Eclipse: search parent pom

0

$ {project.version} के साथ 1.0_A0 बदलें

एक बार एमवीएन चलाएं। यह सभी आवश्यक भंडार डाउनलोड करेगा। इस चरण के बाद आप 1.0_ए0 पर वापस जा सकते हैं।

+0

यह केवल तभी काम करता है जब आवश्यक पैरेंट पीओएम के उप-मॉड्यूल के पीओएम के समान संस्करण हो। ऐसी स्थिति हर बार नहीं होती है। –

0

मुझे अपने काम में भी इसी तरह की समस्या थी।

निर्भरता के बिना मूल परियोजना का निर्माण .m2 फ़ोल्डर में parent_project.pom फ़ाइल बनाई गई।

फिर मूल पीओएम में बाल मॉड्यूल जोड़ें और मेवेन बिल्ड चलाएं।

<modules> 
    <module>module1</module> 
    <module>module2</module> 
    <module>module3</module> 
    <module>module4</module> 
</modules> 
संबंधित मुद्दे