2013-06-26 8 views
28

में प्रबंधित किया गया है मेरे पास एक मेवेन प्रोजेक्ट है जिसमें कई मॉड्यूल हैं। ग्रहण में (जूनो, एम 2 के साथ) यह ठीक संकलन प्रतीत होता है। लेकिन जब मैं मॉड्यूल में से एक पर एक मैवेन स्थापित करता हूं, तो बिल्ड तुरंत विफल हो जाता है।'dependencies.dependency.version' में त्रुटि गुम है, लेकिन संस्करण को पेरेंट

जनक पोम:

<groupId>com.sw.system4</groupId> 
    <artifactId>system4-parent</artifactId> 
    <version>${system4.version}</version> 
    <packaging>pom</packaging> 
    <name>System 4 Parent Project</name> 
    <modules> 
    <module>system4-data</module> 
    ...others... 
    </modules> 
    <properties> 
    <system4.version>0.0.1-SNAPSHOT</system4.version> 
    <spring.version>3.2.3.RELEASE</spring.version> 
    ... others... 
    </properties> 

    <dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
     <scope>runtime</scope> 
     </dependency> 
    ... lots of others ... 
    </dependencies> 
    </dependencyManagement> 

बाल पोम:

<parent> 
    <groupId>com.sw.system4</groupId> 
    <artifactId>system4-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>system4-data</artifactId> 
    <dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    ... lots of others... 
    </dependencies> 

जब मैं निर्माण, मैं निम्नलिखित उत्पादन प्राप्त करें:

[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project com.sw.system4:system4-data:0.0.1-SNAPSHOT (C:\work\eclips 
e_workspaces\systemiv\system4-parent\system4-data\pom.xml) has 8 errors 

[ERROR]  'dependencies.dependency.version' for org.springframework:spring-cor 
e:jar is missing. @ line 16, column 16 

... others omitted for clarity ... 

मुझे समझ में क्यों यह भी नहीं है न संकलन करने का प्रयास करें। मैंने माता-पिता और बच्चे से रनटाइम गुंजाइश को हटाने का प्रयास किया, और इससे कोई फर्क नहीं पड़ता। कृपया सहायता कीजिए!

+0

[dependencies.dependency.version का संभावित डुप्लिकेट गायब है, भले ही निर्भरता पहले से ही अपने माता-पिता की पोम फ़ाइल के निर्भरता प्रबंधन अनुभाग में घोषित हो) [http://stackoverflow.com/questions/12900525/dependencies- निर्भरता-version-is -माम-भले ही निर्भरता-पहले से ही है) – JohnEye

उत्तर

31

कुछ बातें मुझे लगता है कि आप की कोशिश कर सकते:

  1. रखें में संस्करण का शाब्दिक मूल्य पोम

    <dependency> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-core</artifactId> 
        <version>3.2.3.RELEASE</version> 
        <scope>runtime</scope> 
    </dependency> 
    
  2. अपने .m2 कैश को सामान्य रूप से स्थित C: \ Users \ user.m2 \ repository को साफ़ करें। मैं कहूंगा कि जब मैं मैवेन में काम कर रहा हूं तो मैं इसे अक्सर करता हूं। विशेष रूप से ऐसा करने से पहले कि मैं अधिक आत्मविश्वास हो सकता हूं सीआई चलाएगा। आपको फ़ोल्डर को हर बार नूक करने की ज़रूरत नहीं है, कभी-कभी केवल आपके प्रोजेक्ट पैकेज और .cache फ़ोल्डर पर्याप्त हैं।

  3. अपने माता पिता पोम घोषणा करने के लिए एक relativePath टैग जोड़ें

    <parent> 
        <groupId>com.mycompany.app</groupId> 
        <artifactId>my-app</artifactId> 
        <version>1</version> 
    <relativePath>../parent/pom.xml</relativePath> 
    </parent> 
    

ऐसा लगता है कि आप अपने poms में 8 कुल त्रुटियाँ हैं। मैं पैरेंट पोम और गुण जोड़ने से पहले कुछ बुनियादी संकलन चलाने की कोशिश करता हूं।

+0

बस स्पष्ट करने के लिए - अन्य 7 त्रुटियों को जिन्हें मैंने बहिष्कृत किया था, वे सभी समान थे - यानी निर्भरता। निर्भरता.वर्जन (अन्य निर्भरता) – fancyplants

+3

<सापेक्षपाथ> मेरे लिए कुंजी थी: एक मॉड्यूल डिफ़ॉल्ट बच्चे में नहीं था स्थान लेकिन एक उपनिर्देशिका गहरी है। धन्यवाद। – Glenn

+1

मैवेन निर्भरता के बारे में शिकायत करने का एक अन्य कारण यह है कि जब माता-पिता पोम में घोषित निर्भरता है जो कि बच्चे के पोम की तलाश में है। – zdenekca

1

सिद्धांत रूप में, मैवेन एक मूल संस्करण सेट करने के लिए किसी संपत्ति का उपयोग करने की अनुमति नहीं देता है।

आपके मामले में, मैवेन यह नहीं समझ सकता कि आपके माता-पिता के 0.0.1-स्नैपशॉट संस्करण वर्तमान में आपके प्रोजेक्ट में है, और इसलिए यह आपके स्थानीय रेपो में इसे खोजने का प्रयास करता है। यह शायद एक स्नैपशॉट है क्योंकि यह एक पुराना संस्करण है, जिसमें शायद आपका निर्भरता प्रबंधन अनुभाग शामिल नहीं है।

एक समाधान है, हालांकि नहीं है:

बस इस के साथ बच्चे पोम में माता पिता के अनुभाग बदलने के लिए:

<parent> 
    <groupId>com.sw.system4</groupId> 
    <artifactId>system4-parent</artifactId> 
    <version>${system4.version}</version> 
    <relativePath>../pom.xml</relativePath> <!-- this must match your parent pom location --> 
</parent> 
+0

समस्या यह है कि मूल प्रोजेक्ट में अन्य उपप्रोजेक्ट (मॉड्यूल) हैं जो ठीक संकलित करते हैं। सापेक्ष पैथ डिफ़ॉल्ट रूप से पैरेंट पोम के स्थान पर इंगित करता है। – fancyplants

1

ठीक है, बालों के फाड़ने के बाद मेरे पास एक संकलन प्रणाली है। <scope>runtime</scope> और एक के साथ एक -

.m2 कैश सफाई एक बात यह है कि मदद की (ब्रायन करने के लिए धन्यवाद)

गलतियों मैं बनाया था में से एक माता पिता पोम dependencyManagement अनुभाग में प्रत्येक निर्भरता के 2 संस्करण डाल करने के लिए था बिना - यह कोशिश करना और ग्रहण को खुश करना था (यानी नकली संकलन त्रुटियों को प्रदर्शित नहीं करना) साथ ही कमांड लाइन पर चलाने में सक्षम होना। यह सिर्फ जटिल मामलों में था, इसलिए मैंने रनटाइम को हटा दिया।

स्पष्ट रूप से माता पिता के संस्करण की स्थापना भी काम करने के लिए लग रहा था (यह शर्म की बात है कि Maven इस तरह के गुण का उपयोग कर के लिए और अधिक व्यापक समर्थन नहीं है है!)

<parent> 
    <groupId>com.sw.system4</groupId> 
    <artifactId>system4-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 

मैं तो अजीब हो रही थी ' सभी निर्भरताओं के लिए बाल मॉड्यूल में त्रुटियों के लिए निर्भरताओं को इकट्ठा करने में विफल रहा, कह रहा है कि यह माता-पिता का पता नहीं लगा सका - भले ही इसे संकलित करने वाले अन्य मॉड्यूल के समान स्थापित किया गया हो।

मैंने अंततः प्रत्येक मॉड्यूल को संकलित करने की कोशिश करने के बजाय मूल पोम से संकलित करके चीजों को हल किया। इसने मुझे एक अलग मॉड्यूल में अपेक्षाकृत सरल फिक्स के साथ एक त्रुटि के बारे में बताया, जिसने अजीब तरह से इसे सभी संकलित कर दिया।

दूसरे शब्दों में, यदि आपको बाल मॉड्यूल ए से संबंधित मैवेन त्रुटियां मिलती हैं, तो यह असंबद्ध बाल मॉड्यूल जेड के साथ वास्तव में एक समस्या हो सकती है, इसलिए वहां देखें। (और अपना कैश हटाएं)

+0

पूरे स्थानीय रेपो को साफ करना थोड़ा बहुत कट्टरपंथी समाधान है ... बस अपनी परियोजना से संबंधित उप-निकालना को हटा दें। एक ही विषय पर एक अन्य पोस्ट: http://stackoverflow.com/questions/2389602/maven2-cannot-find-parent-from-relative-path – Yanflea

5

यदि कोई भी मुझे उसी समस्या के साथ अपना रास्ता ढूंढता है, तो मेरी समस्या यह थी कि मैं बच्चे के पोम से प्रतिलिपि बनाई गई निर्भरताओं के आसपास <dependencyManagement> टैग खो रहा था।

+0

और मुझे हमेशा आश्चर्य हुआ कि अब तक निर्भरता प्रबंधन का उपयोग क्या था .. यह मेरे लिए काम करता था .. मैं इस टैग को पैरेंट पोम में लापता था। –

+1

आपने मुझे भी बचाया! धन्यवाद – madz

0

सुनिश्चित करें कि बच्चे की परियोजना/माता-पिता/संस्करण नोड में मूल्य अपने माता पिता की परियोजना/संस्करण मूल्य

0

आप बच्चे मॉड्यूल करने से पहले माता-पिता मॉड्यूल का निर्माण करना चाहिए मेल खाता है।

0

.m2 फ़ोल्डर में settings.xml को हटाने के लिए अभी क्या काम किया गया था: यह फ़ाइल प्रोजेक्ट को वसंत एमवीसी और वेब के एक संस्करण की तलाश करने के लिए कह रही थी जो मौजूद नहीं थी।

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