2009-08-11 9 views
194

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

उत्तर

233

प्रारंभ Maven और की शुरुआत की जांच उत्पादन।

... 
[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 
... 

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

+6

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

21

M2_HOME वैश्विक चर के लिए पर्यावरण चर। Settings Reference देखें:

The settings element in the settings.xml file contains elements used to define values which configure Maven execution in various ways, like the pom.xml , but should not be bundled to any specific project, or distributed to an audience. These include values such as the local repository location, alternate remote repository servers, and authentication information. There are two locations where a settings.xml file may live:

  • The Maven install: $M2_HOME/conf/settings.xml
  • A user's install: ${user.home}/.m2/settings.xml
+0

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

+3

+1 उत्तर, कैलेटस। मुझे लगता है कि आपके "सेटिंग्स संदर्भ" लिंक से अगली पंक्ति का उल्लेख करना उचित है: 'पूर्व सेटिंग्स.एक्सएमएल को वैश्विक सेटिंग्स भी कहा जाता है, बाद की सेटिंग्स.एक्सएमएल को उपयोगकर्ता सेटिंग्स के रूप में संदर्भित किया जाता है। यदि दोनों फाइलें मौजूद हैं, तो उपयोगकर्ता की विशिष्ट सेटिंग्स.एक्सएमएल प्रभावी होने के साथ उनकी सामग्री विलय हो जाती है। –

145

cletus को आपकी टिप्पणी '(सही) जवाब का तात्पर्य कई Maven सेटिंग्स शामिल फ़ाइलें देखते हैं कि।

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

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

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

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

+0

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

+0

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

+0

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

32

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

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

      NOTE: This location can be overridden with the CLI option: 
    
          -s /path/to/user/settings.xml 
    
  2. वैश्विक स्तर। यह settings.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 –

+0

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

21

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

यदि यह पढ़ता इस settings.xml तो Maven एक त्रुटि रिपोर्ट: "त्रुटि settings.xml पढ़ रहे हैं ..." -X विकल्प (डीबग) के साथ

+3

जबकि कैलेटस का उत्तर बहुत ही जानकारीपूर्ण था, यह उत्तर सख्त अर्थ में है जो मैं खोज रहा था (माना जाता है कि किसी भी सेटिंग की कमी है। मैवेन में एक्सएमएल फाइल रिपोर्टिंग मैकेनिज्म) – harschware

83

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

mvn help:effective-settings 

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

+0

यह मुझे पुराने मेवेन रेपो को अपडेट करने में मदद करता है http://repo1.maven.org/maven2/ http://search.maven.org – Ricardo

+0

बिल्कुल सही, बस मैं जो खोज रहा था – pdem

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