मावेन को किसी अन्य निर्देशिका से कैसे चलाएं (सीडी के बिना प्रोजेक्ट डीआईआर)?


249

मान लीजिए कि मेरा मावेन प्रोजेक्ट अंदर स्थित है /some/location/projectऔर मेरी वर्तमान स्थिति यह है /another/location/कि मैं प्रोजेक्ट लोकेशन में बदलाव किए बिना मावेन बिल्ड कैसे चला सकता हूं cd /some/location/project?


4
@khmarbaise - मैं कुछ शेल स्क्रिप्ट का उपयोग करके बिल्ड और तैनाती को स्वचालित करने की कोशिश कर रहा हूं और यह सीधे बदलने के लिए सीडी का उपयोग करने के लिए सीधे नहीं है।
अली शकीबा

@khmarbaise - आप एक निर्देशिका में या उसके समीप कई फ़ाइलों या फ़ोल्डरों को संदर्भित करना चाह सकते हैं, लेकिन आपका pom और फ़ाइलों को संदर्भित करता है जो दूसरे में हैं।
17

जवाबों:


432

आप पैरामीटर का उपयोग कर सकते हैं -fऔर अपनी pom फ़ाइल के लिए पथ निर्दिष्ट कर सकते हैं , जैसेmvn -f /path/to/pom.xml

यह मावेन चलाता है "जैसे कि" यह /path/toकार्यशील निर्देशिका के लिए था।


39
नहीं, -f, मावेन को उस विशिष्ट पोम से शुरू करता है, और जिस निर्देशिका में पोम है, उस परिभाषा के अनुसार, मेवेन के लिए काम करने वाली निर्देशिका है। मैं अपने CI-Server में उपनिर्देशिका में विशिष्ट मॉड्यूल बनाने के लिए इसका उपयोग करता हूं, और मैं आपको आश्वासन दे सकता हूं, कि यह काम करता है।
दुनि

15
रिश्तेदार रास्तों के लिए एक डॉट का उपयोग करें। जैसे./path/pom.xml
स्नेक

3
जैसा कि दुनी कहते हैं, यह काम नहीं करता है। वर्तमान dir आप कहाँ हैं। आप किसी अन्य डायर में एक पोम का उपयोग कर रहे हैं। मावेन इसका समर्थन नहीं करता है।
धुंध

1
java.lang.IllegalArgumentException: पैरामीटर 'निर्देशिका' निर्देशिका नहीं है
दामिर ओलेजर

मेरी अधिकांश परियोजनाओं के लिए काम करता है। दुर्भाग्य से, निष्पादन प्लगइन का उपयोग करने वाली कुछ परियोजनाएं इस तरह नहीं बनाई जा सकती हैं क्योंकि प्लगइन निष्पादन योग्य नहीं पाता है, भले ही कार्यशील निर्देशिका कॉन्फ़िगर हो।
user2043553

15

मुझे नहीं लगता कि मावेन इसका समर्थन करता है। यदि आप यूनिक्स पर हैं, और अपनी वर्तमान निर्देशिका को छोड़ना नहीं चाहते हैं, तो आप एक छोटी सी शेल स्क्रिप्ट, शेल फ़ंक्शन, या सिर्फ एक उप-शेल का उपयोग कर सकते हैं:

user@host ~/project$ (cd ~/some/location; mvn install)
[ ... mvn build ... ]
user@host ~/project$

बैश फ़ंक्शन के रूप में (जिसे आप अपने ~ / .bashrc में जोड़ सकते हैं):

function mvn-there() {
  DIR="$1"
  shift
  (cd $DIR; mvn "$@")     
} 

user@host ~/project$ mvn-there ~/some/location install)
[ ... mvn build ... ]
user@host ~/project$

मुझे लगता है कि यह विशिष्ट प्रश्न का उत्तर नहीं देता है, लेकिन आपको यह प्रदान कर सकता है कि आप क्या कर रहे हैं। मैं विंडोज शेल से परिचित नहीं हूं, हालांकि आपको वहां भी इसी तरह के समाधान तक पहुंचने में सक्षम होना चाहिए।

सादर


4
अति उत्कृष्ट। mvan -f param बच्चे के पोम को संदर्भित करने के लिए सापेक्ष पथ का उपयोग करके मल्टीमॉड्यूल परियोजनाओं के साथ काम नहीं करता है। धन्यवाद, यही मैं ढूंढ रहा था।
redochka

1
यह मैक पर काम कर रहा है (और मुझे पता है कि यह लिनक्स पर काम करेगा)। विंडोज (या किसी भी प्लेटफ़ॉर्म) पर आपको वर्तमान पथ को बचाने में सक्षम होना चाहिए, अपनी परियोजना के लिए सीडी, वहां मावन सामान और एक स्क्रिप्ट में सीडी वापस करना चाहिए। एकमात्र मुद्दा यह होगा कि स्क्रिप्ट आधी बंद हो जाए।
Erk


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.