सीवीआई पैरामीटर के रूप में मावेन के स्थानीय भंडार स्थान को निर्दिष्ट करना


131

क्या मावेन कमांड लाइन पर तर्क के रूप में स्थानीय मावेन भंडार का स्थान निर्धारित करना संभव है?

बात यह है कि मैं डिफ़ॉल्ट एक का उपयोग नहीं करते ~/.m2/repository। हालाँकि मैंने कुछ प्रोजेक्ट की जाँच की जो कि अपनी सेटिंग्स के साथ बनाया जा रहा है -s settings.xml। वह सेटिंग। Xml मेरे स्थानीय रिपॉजिटरी को निर्दिष्ट नहीं करता है, इसलिए मावेन ~/.m2/repositoryफिर से उपयोग करता है ... मैं <localRepository>प्रोजेक्ट की सेटिंग में एक तत्व जोड़ने के बिना एक गैर-डिफ़ॉल्ट स्थानीय रिपॉजिटरी स्थान का उपयोग करना चाहूंगा।

मैंने कोशिश की

  • -DlocalRepository="..."
  • $mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
  • -Dsettings.localRepository

लेकिन इनमें से कोई भी विकल्प काम नहीं करता है।

इसलिए मुझे लगता है कि मुझे यह तय करना होगा कि क्या मैं किसी थर्ड पार्टी सेटिंग को संशोधित करूंगा ~


जाहिर है यह आपकी गलती नहीं है, लेकिन मावेन परियोजनाओं को प्रदान नहीं किया जाना चाहिए settings.xmlMaven.apache.org/guides/mini/guide-configuring-maven.html
oberlies

जवाबों:


258

मैवेन संपत्ति का उपयोग करें maven.repo.local:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

कोई संशोधन settings.xmlआवश्यक नहीं हैं।


10
स्थानीय भंडार एक पूर्ण पथ होना चाहिए, maven.apache.org/guides/mini/guide-configuring-maven.html
luka5z

3
विंडोज पर `mvan -D" maven.repo.local "=% USER_HOME% /। मेरा / अन्य / रिपॉजिटरी क्लीन
इंस्टॉल`

क्या मैं उसी चीज़ को प्राप्त करने के लिए एक पर्यावरण चर सेट कर सकता हूं?
पाउडर 366

@ पाउडर 366 नहीं, AFAIK
पेट्र कोज़ल्का

मावेन -३.३.३ का उपयोग करते हुए स्थानीय रिपॉजिटरी डायर एक रिश्तेदार पथ के रूप में काम करता है (कम से कम मैकओएस पर)
एड रान्डल

8

Git के लिए:

alias mvn='mvn "-Dmaven.repo.local=$(git rev-parse --show-toplevel)/.m2/repository"'

यह प्रत्येक गिट रिपॉजिटरी में एक अलग मावेन भंडार का उपयोग करता है


2

काम करने का एक प्रकार हैकी है:

  1. <localRepository>${m2.localRepository}</localRepository>अपनी सेटिंग्स में जोड़ें। xml
  2. अपने mvn.sh या mvn.bat में, कमांड में "$ @" -Dm2.localRepository=<full path to home dir>/.m2/repository से पहले जोड़ें । यह आपके डिफ़ॉल्ट स्थानीय रेपो को बनायेगा जहाँ यह होना चाहिए।
  3. अब आप उपयोग कर सकते हैं mvn -Dm2.localRepository=... <phases/goals>। क्योंकि आपकी कमांड लाइन सिस्टम प्रॉपर्टी को mvan स्क्रिप्ट में एक के बाद कमांड लाइन में जोड़ा जाता है, यह पूर्ववर्तीता लेगा। (कम से कम मुझे पूरा यकीन है कि यह विंडो और लाइनक्स दोनों पर काम करता है, लेकिन परीक्षण बताएगा।)

यह मदद नहीं करता है, मैंने जोड़ा -Dm2.localRepository = "कस्टम" से पहले "$ @" mvan स्क्रिप्ट में, अभी भी ~ / .m2 / रिपॉजिटरी का उपयोग करता है ... फिर मैंने भी शामिल किया -Dm2.localRepository = "कस्टम" जब चल रहा है। $ mvn, अभी भी ~ / .m2 / रिपॉजिटरी का उपयोग करता है ... बस settings.xml में localRepository तत्व के बिना, इसे बदलने का कोई तरीका नहीं है
lisak

@lisak: क्या आपने सेटिंग। xml में लोकल रिपेरिटरी एलिमेंट को जोड़ने का चरण 1 किया था? मैंने इसका परीक्षण किया, और यह काम करता है, सिवाय इसके कि आप वास्तव में '~' उपनाम का mvan स्क्रिप्ट में उपयोग नहीं कर सकते। आपको इसमें एक पूर्ण मार्ग डालना होगा, हालाँकि आप शायद उस आस-पास जाने के लिए कुछ अन्य शेल / बैच स्क्रिप्ट ट्रिक कर सकते हैं।
रयान स्टीवर्ट

यह काम करता है, लेकिन मेरे पास वास्तव में स्पष्टीकरण नहीं है ... अगर मैं $ 2 में बिना किसी स्थानीय M2_HOME / conf / settings.xml में LocalRepository की घोषणा करता हूं, तो यह ss.xml से overriden है और चरण 2 के साथ काम नहीं करता है यह काम करता है ... लेकिन केवल M2RHos / conf / settings.xml में localRepository के बिना चरण 2 काम नहीं करता है ... दोनों चरणों 1,2 काम करने के लिए इसे लागू किया जाना चाहिए और मैं भी स्थान बदल सकते हैं तो $ mvn के माध्यम से -DM2.localRepository = धन्यवाद रयान
लिसेक करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.