'com.mycompany' पर 'parent.relativePath' अंक: org.apache के बजाय MyProject: अपाचे - क्यों?


135

यह सच है कि सोलर प्रोजेक्ट डायरेक्टरी MyProject पैरेंट डायरेक्टरी के अंदर है (लेकिन 2 के बीच कोई मॉड्यूल या कोई मावेन संबंध नहीं है, बस एफएस सुविधा है)। क्या मुझे इसे बाहर रखना है?

$ mvn -DskipTests clean install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.apache.lucene:lucene-solr-grandparent:pom:3.1-SNAPSHOT
[WARNING] 'parent.relativePath' points at com.mycompany:MyProject instead of org.apache:apache, please verify your project structure @ line 23, column 11
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 

से pom.xml:

<parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>

$ pwd
/Users/simpatico/ws/MyProjectBaseDir/solr

जवाबों:


259

एक जोड़े खाली <relativePath> करने के लिए <parent>इतना है कि यह खजाने से माता-पिता पोम हल करता है।

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
    <relativePath></relativePath>
  </parent>

यहाँ प्रासंगिक डॉक्टर है

यह सुविधा केवल उस परियोजना के स्थानीय चेकआउट में विकास को बढ़ाने के लिए है। यदि आप सुविधा को अक्षम करना चाहते हैं और हमेशा रिपॉजिटरी से मूल POM को हल करना चाहते हैं, तो एक रिक्त स्ट्रिंग पर मान सेट करें।
डिफ़ॉल्ट मान है: ../pom.xml


15
मानो या न मानो, चेतावनी कुछ लोगों को डराती है। मेरे बॉस ने मुझे बस यह जांचने के लिए कहा कि हमें यह चेतावनी क्यों मिल रही है और इस पोस्ट ने मेरा दिन बना दिया।
पियरे

16
चेतावनी आसमान से गिरती नहीं है। इसका एक कारण है। खाली <सापेक्षपाथ> </ रिश्तेदारपाठ> जोड़कर बिना यह जाने कि समाधान क्यों नहीं है ....
लॉरेंस

1
मैं अपाचे-स्पार्क बनाने की कोशिश कर रहा हूं। मेरे मामले में यह समाधान काम नहीं कर रहा है।
जवदाबा ३१'१५

29
यदि आप चेतावनी को ठीक नहीं करते हैं तो आप लोगों को चेतावनी को अनदेखा करने के लिए प्रशिक्षित करते हैं।
पॉल जैक्सन

4
IMHO <relativePath />बेहतर दिखता है
Lu55

20

या तो चेतावनी को अनदेखा करें, स्रोतों को असंबंधित माता-पिता से बाहर ले जाएं या तत्व का सही मूल्य दर्ज करें। समस्‍या रिलेटेडपैथ के लिए डिफॉल्ट मान के कारण होती है जो है ../pom.xml और यह डिफॉल्ट मान आपके प्रभावी पोम में इंजेक्ट हो जाता है, चेतावनी को ट्रिगर करता है।


मुझे संदेह है कि यह डिफ़ॉल्ट व्यवहार कुछ अन्य समस्याएं पैदा कर रहा है। 'तत्व में प्रवेश' से आपका क्या तात्पर्य है?
सिम्पटिको

मेरा मतलब है कि आपको <सापेक्षपाथ> तत्व के लिए सही मूल्य लिखना चाहिए, जहां पर आपके माता-पिता वर्तमान पोम के सापेक्ष हैं।
मैक्लिंट

1
पथ को org.apache:apacheस्थानीय रूप से कंप्यूटर पर स्थानीय (केवल .m2 रिपॉजिटरी को छोड़कर) संभव नहीं है। ऐसे मामलों में, एक खाली सापेक्षपैथ निर्दिष्ट किया जाना चाहिए।
साइमन फोर्सबर्ग

2

वह संदेश आपके वर्तमान प्रोजेक्ट के सापेक्ष मूल निर्देशिका में pom.xml के कारण हो सकता है। मूल निर्देशिका में pom प्रोजेक्ट से मेल नहीं खाता है। वर्तमान pom का पारदर्शी कॉन्फ़िगरेशन।


1
सही है, लेकिन आपका जवाब समाधान की व्याख्या नहीं करता है। पथ को org.apache:apacheस्थानीय रूप से कंप्यूटर पर स्थानीय (केवल .m2 रिपॉजिटरी को छोड़कर) संभव नहीं है। ऐसे मामलों में, एक खाली सापेक्षपैथ निर्दिष्ट किया जाना चाहिए।
साइमन फोर्सबर्ग

मेरे मामले में यही कारण था। यह चेतावनी बिना किसी स्पष्ट कारण के एक दिन दिखाई देना शुरू हुई (एक ही संस्करण, एक ही प्रोजेक्ट कोड)। अंत में प्रोजेक्ट के फ़ोल्डर के ठीक बाहर एक 'pom.xml' फ़ाइल देखी गई, जिसे maven द्वारा उठाया जा रहा था।
सुदीप

2

मेरे पास फ्रिंज केस है। मेरी ओर से एक मोटी उंगली का मामला।

मेरे पोम के माता-पिता के पास यह था:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mygroup </groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>pom-parent</name>

और मेरा (बच्चा) पोम

<parent>
    <groupId>com.mygroup</groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom-parent/pom.xml</relativePath>
</parent>  

मेरे माता-पिता में मेरी समूह आईडी में नाम के अंत में एक मोटी उंगली का स्थान था। सही "com.mygroup" के बजाय "com.mygroup"।

इस मोटी उंगली की गलती के कारण ........ "groupId" नाम मेल नहीं खाते थे .... और मुझे त्रुटि मिली।

इससे पहले कि आप कई चरम सीमाओं को हल करने के लिए जाएं, उर्फ, मोटी उंगली की गलतियों की जांच करें।

त्रुटि मुझे इंटरनेट-खोज के लिए मिली

"प्रोजेक्ट बिल्ड एरर: पोम के 'पेरेंट्रेलरेटिव पैथ'" "" अपने प्रोजेक्ट स्ट्रक्चर को सत्यापित करें "


1

मुझे लगता है कि आपने <relativePath>प्रश्न में टैग को छोड़ दिया है । मैं ऐसा इसलिए कह रहा हूं क्योंकि, इसके बिना यह त्रुटि उत्पन्न नहीं होगी। ऐसा कहे जाने के बाद,

आपको जिस लाइन पर ध्यान केंद्रित करना होगा, वह है नीचे का चेतावनी कथन।

com.mycompany पर 'parent.relativePath' अंक: org.apache के बजाय MyProject: अपाचे

यह स्पष्ट रूप से कहता है कि आपके मॉड्यूल पर टैग का सापेक्ष पथ एक पोम फ़ाइल की ओर इशारा करता है जिसमें निर्दिष्ट की तुलना में अलग-अलग कलाकृतियां हैं

इसका कारण यह है कि artifactIdआपके parent/pom.xmlऔर आपके बीच artifactIdके <parent>टैग में एक बेमेल संबंध है module/pom.xml। चेतावनी में परिवर्तन से बचने के लिए <parent>अपने module/pom.xmlनीचे दिखाए अनुसार।

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>

2
पथ को org.apache:apacheस्थानीय रूप से कंप्यूटर पर स्थानीय (केवल .m2 रिपॉजिटरी को छोड़कर) संभव नहीं है। ऐसे मामलों में, एक खाली सापेक्षपैथ निर्दिष्ट किया जाना चाहिए।
साइमन फोर्सबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.