मावेन: कमांड लाइन से डायरेक्टरी को टारगेट में कैसे बदलें?
(मैं कुछ मामलों में एक और लक्ष्य निर्देशिका का उपयोग करना चाहता हूं)
मावेन: कमांड लाइन से डायरेक्टरी को टारगेट में कैसे बदलें?
(मैं कुछ मामलों में एक और लक्ष्य निर्देशिका का उपयोग करना चाहता हूं)
target/, और मैं एक दूसरे के पैर की उंगलियों पर कदम रखने वाली दो प्रक्रियाओं के बिना कमांड लाइन से निर्माण करने में सक्षम होना चाहता हूं।
src/it/my-integration-test-project/pom.xmlएक targetनिर्देशिका बनाए बिना कमांड लाइन से एकीकरण परीक्षण का निर्माण करना, जो उस समय कॉपी हो जाएगा जब एकीकरण परीक्षण युक्त परियोजना के सत्यापित चरण के हिस्से के रूप में चलाए जाएंगे।
जवाबों:
आपको प्रोफाइल का उपयोग करना चाहिए।
<profiles>
<profile>
<id>otherOutputDir</id>
<build>
<directory>yourDirectory</directory>
</build>
</profile>
</profiles>
और अपने प्रोफाइल के साथ मावेन शुरू करें
mvn compile -PotherOutputDir
यदि आप वास्तव में कमांड लाइन से अपनी निर्देशिका को परिभाषित करना चाहते हैं तो आप ऐसा कुछ कर सकते हैं ( अनुशंसित बिल्कुल नहीं ):
<properties>
<buildDirectory>${project.basedir}/target</buildDirectory>
</properties>
<build>
<directory>${buildDirectory}</directory>
</build>
और इस तरह संकलित करें:
mvn compile -DbuildDirectory=test
ऐसा इसलिए है क्योंकि आप लक्ष्य निर्देशिका को बदलकर उपयोग नहीं कर सकते -Dproject.build.directory
-Dproject.build.directoryका उपयोग किया जाना था, तो यह प्रयोग करने योग्य होगा; और यह -Dproject.build.directoryसमस्या के लिए एक समाधान है। पहले समाधान के साथ, आप एक बार और सभी के लिए पथ निर्दिष्ट करते हैं, आप कमांड लाइन लॉन्च करते समय डायरेक्टरी नाम में एक टाइपो नहीं कर सकते हैं, आप आसानी से इस समाधान का उपयोग कर सकते हैं, भले ही आप आईडीई, आदि से काम करते हों
settings.xmlकमांड लाइन के बजाय प्रोफाइल को सक्रिय कर सकते हैं , और भी अधिक पोर्टेबिलिटी के लिए?
कॉलिन सही है कि एक प्रोफ़ाइल का उपयोग किया जाना चाहिए। हालाँकि, उनका उत्तर प्रोफ़ाइल में लक्ष्य निर्देशिका को हार्ड-कोड करता है। एक वैकल्पिक समाधान इस तरह से एक प्रोफ़ाइल जोड़ना होगा:
<profile>
<id>alternateBuildDir</id>
<activation>
<property>
<name>alt.build.dir</name>
</property>
</activation>
<build>
<directory>${alt.build.dir}</directory>
</build>
</profile>
ऐसा करने से बिल्ड निर्देशिका को बदलने का प्रभाव होगा। जो भी alt.build.dir संपत्ति द्वारा दी गई है, जो कि POM में, उपयोगकर्ता की सेटिंग में या कमांड लाइन पर दी जा सकती है। यदि संपत्ति मौजूद नहीं है, तो संकलन सामान्य लक्ष्य निर्देशिका में होगा।
-Dalt.build.dir=~/mytargetको -Dकुछ अन्य संपत्ति के लिए उपयोग करने के बराबर नहीं करेगा ?