Maven यह निर्धारित करने के लिए कि कौन सी सेटिंग .xml फ़ाइल Maven का उपयोग कर रही है


278

मैं किस सेटिंग्स को निर्धारित करने के लिए मावेन कमांड लाइन का उपयोग करता हूं। Mml फाइल उठा रहा है?

जवाबों:


333

-एक्स विकल्प (डिबग) के साथ मावेन शुरू करें और आउटपुट की शुरुआत की जांच करें। ऐसा कुछ होना चाहिए:

...
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from c:\....\apache-maven-3.0.3\conf\settings.xml
[DEBUG] Reading user settings from c:\....\.m2\settings.xml
[DEBUG] Using local repository at C:\....\repository
...

(मूल निर्देशिका नाम मेरे द्वारा हटा दिए गए हैं)


10
शायद यह डिबग आउटपुट में नहीं था जब तक कि मावेन 3 जारी नहीं किया गया था, लेकिन कुछ 2.5 साल बाद आपका पोस्ट आखिरकार सटीक उत्तर था जिसकी मुझे तलाश थी (खेद है कि इसे नोट करने में 6 महीने की देरी के लिए)।
harschware

मावेन I का संस्करण, maven2.x का उपयोग कर रहा था, जब -B ध्वज का उपयोग किया गया था तब यह महत्वपूर्ण विवरण नहीं दिखा था। ... दुर्भाग्यपूर्ण है, अगर आप एक जेनकींस सर्वर के साथ क्या चल रहा है, डिबग करने की कोशिश कर रहे हैं।
कॉग्निटियाक्लेव्स

168

Cletus '(सही) उत्तर के लिए आपकी टिप्पणी का अर्थ है कि इसमें कई मावेन सेटिंग्स फाइलें शामिल हैं।

मावेन हमेशा एक या दो सेटिंग्स फ़ाइलों का उपयोग करता है। ($ {M2_HOME} /conf/settings.xml) में परिभाषित वैश्विक सेटिंग्स की हमेशा आवश्यकता होती है। उपयोगकर्ता सेटिंग फ़ाइल ($ {user.home} / m2 / settings.xml में परिभाषित) वैकल्पिक है। उपयोगकर्ता सेटिंग्स में परिभाषित कोई भी सेटिंग संबंधित वैश्विक सेटिंग्स पर पूर्वता लेती है।

आप कमांड लाइन से वैश्विक और उपयोगकर्ता सेटिंग्स के स्थान को ओवरराइड कर सकते हैं, निम्न उदाहरण वैश्विक सेटिंग्स को c: \ global \ settings.xml और उपयोगकर्ता सेटिंग्स को c: \ user \ settings.xml में सेट करेगा :

mvn install --settings c:\user\settings.xml 
    --global-settings c:\global\settings.xml

वर्तमान में मावेन के साथ उपयोगकर्ता और वैश्विक सेटिंग्स फ़ाइलों का उपयोग करने के लिए कोई संपत्ति या साधन नहीं है। इन मूल्यों तक पहुँचने के लिए, आपको MavenCli और / या DefaultMavenSettingsBuilder को संशोधित सेटिंग्स ऑब्जेक्ट में फ़ाइल स्थानों को इंजेक्ट करने के लिए संशोधित करना होगा।


1
यह बहुत अच्छा होगा यदि हम कई उपयोगकर्ता की सेटिंग्स प्रदान कर सकते हैं। xml, इसलिए हम उन्हें उदाहरण के लिए विभिन्न परियोजनाओं के साथ उपयोग कर सकते हैं। मुझे पता है कि हम एक प्रोफ़ाइल का उपयोग कर सकते हैं। लेकिन एक अलग फाइल होगी तो बहुत बेहतर होगा। यह संभव नहीं है, है ना ?! चीयर्स!
डेसपोट

मैं फ़ाइल के साथ छेड़छाड़ किए बिना सिर्फ एक बार अपनी उपयोगकर्ता सेटिंग्स को ओवरराइड करने के लिए एक समाधान की तलाश में था। इसलिए मैंने सिर्फ उपयोगकर्ता सेटिंग्स के लिए वैश्विक फ़ाइल का उपयोग किया है। Ie --settings c: \ global \ settings.xml इस तरह से उपयोगकर्ता फ़ाइल को छोड़ दिया गया
msp

@despot, पार्टी के लिए देर से लेकिन एक तरह से आप परिभाषित कई प्रोफाइल और कुछ कस्टम 'ट्रिगर्स' के माध्यम से कर सकते हैं: maven.apache.org/settings.html#Activation
अविभाजित

यह हमेशा चालू फ़ोल्डर में पोम मांगता है। "आपके द्वारा निर्दिष्ट लक्ष्य को निष्पादित करने के लिए एक परियोजना की आवश्यकता होती है, लेकिन इस निर्देशिका में कोई पोम नहीं है (/) कृपया सत्यापित करें कि आपने सही निर्देशिका से मावेन को आमंत्रित किया है। -> [सहायता 1]"
नीलेश

137

आप अपने उपयोगकर्ता और वैश्विक सेटिंग्स फ़ाइलों की सामग्री को बताने के लिए मावेन सहायता प्लगइन का उपयोग कर सकते हैं ।

mvn help:effective-settings

संयुक्त वैश्विक और उपयोगकर्ता सेटिंग्स को बाहर करने के लिए मावेन से पूछेंगे ।


यह मेरे लिए मदद करता है रेपो वर्ष Maven अद्यतन करने repo1.maven.org/maven2 को search.maven.org
रिकार्डो

40

यह मावेन के लिए विन्यास फाइल है। इसे दो स्तरों पर निर्दिष्ट किया जा सकता है:

  1. उपयोगकर्ता स्तर। यह सेटिंग। Xml फ़ाइल एकल उपयोगकर्ता के लिए कॉन्फ़िगरेशन प्रदान करती है, और सामान्य रूप से $ {user.home} /? M2 / settings.xml में प्रदान की जाती है।

              NOTE: This location can be overridden with the CLI option:
    
              -s /path/to/user/settings.xml
  2. वैश्विक स्तर। यह सेटिंग। Xml फ़ाइल एक मशीन पर सभी मावेन उपयोगकर्ताओं के लिए कॉन्फ़िगरेशन प्रदान करती है (यह मानते हुए कि वे सभी एक ही मावेन स्थापना का उपयोग कर रहे हैं)। यह आम तौर पर $ {maven.home} /conf/settings.xml में प्रदान किया जाता है।

              NOTE: This location can be overridden with the CLI option:
    
              -gs /path/to/global/settings.xml

1
संपत्ति M2_HOME है, maven.home नहीं
रिच सेलर

इससे कोई फर्क नहीं पड़ता। यदि आप maven.home का उपयोग करके पर्यावरण चर को सेट करते हैं, तो यह कोई समस्या नहीं होगी
21th पर पहली बार

24

M2_HOMEवैश्विक एक के लिए वातावरण चर। सेटिंग्स देखें संदर्भ :

settingsमें तत्व settings.xmlफ़ाइल मान जो विभिन्न तरीकों से Maven निष्पादन कॉन्फ़िगर परिभाषित किया जाता तत्वों, जैसे शामिलpom.xml , लेकिन कोई विशेष परियोजना के लिए बंडल नहीं किया जाना चाहिए, या एक दर्शकों के लिए वितरित किए। इनमें स्थानीय रिपॉजिटरी स्थान, वैकल्पिक रिमोट रिपॉजिटरी सर्वर और प्रमाणीकरण जानकारी जैसे मान शामिल हैं। ऐसी दो जगहें हैं जहाँ सेटिंग्स। Xml फ़ाइल रह सकती है:

  • मावेन स्थापित करें: $M2_HOME/conf/settings.xml
  • एक उपयोगकर्ता की स्थापना: ${user.home}/.m2/settings.xml

यदि इस उत्तर का अर्थ यह है कि भंडार का निर्धारण केवल पर्यावरण की जांच करके किया जाता है तो यह एक मान्य उत्तर है। मैं एक कमांड लाइन स्विच या कुछ ऐसा सीखने की उम्मीद कर रहा था जो सभी सेटिंग्स के लिए योग्य पथों की एक निश्चित सूची देता है।
harschware 16

3
+1 जवाब, क्लेटस। मुझे लगता है कि आपके "सेटिंग्स संदर्भ" लिंक से अगली पंक्ति का उल्लेख करना उचित है:the former settings.xml are also called global settings, the latter settings.xml are referred to as user settings. If both files exists, their contents gets merged, with the user-specific settings.xml being dominant.
केविन मेरेडिथ

निजी रिपॉजिटरी खोजने के लिए मशीन विशिष्ट कॉन्फ़िगरेशन की आवश्यकता मुझे बहुत परेशान करती है। मुझे लगता है कि यह जावा इकोसिस्टम में यथास्थिति है, लेकिन यह बहुत ही अनियंत्रित बिल्ड सेटअप की ओर जाता है।
जिपरसन

24

यह निर्धारित करने के लिए त्वरित और गंदी विधि कि मावेन वांछित सेटिंग्स का उपयोग कर रहा है। xml इसकी xml को अमान्य कर देगा और कुछ सुरक्षित मावेन कमांड चलाएगा जिसके लिए settings.xml की आवश्यकता होगी।

यदि यह इस सेटिंग को पढ़ता है। xml तो मावेन एक त्रुटि की रिपोर्ट करता है: "सेटिंग पढ़ने में त्रुटि। xml ..."


3
जबकि Cletus का उत्तर बहुत जानकारीपूर्ण था, यह उत्तर उस सबसे सख्त अर्थ में है जो मैं देख रहा था (दिए गए किसी भी सेटिंग्स की कमी प्रतीत होती है। Maven में ही रिपोर्टिंग तंत्र की
xx
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.