मेरे पास मेवेन के निर्माण और चलाने के लिए कॉन्फ़िगर किया गया एक प्रोजेक्ट है। यह परियोजना मंच विशिष्ट देशी पुस्तकालयों पर निर्भर करती है, और मैं उन निर्भरताओं को प्रबंधित करने के लिए here प्राप्त रणनीति का उपयोग कर रहा हूं।मेवेन 'exec: exec' के साथ तर्क
अनिवार्य रूप से, .dll
या .so
किसी विशेष प्लेटफ़ॉर्म के लिए फ़ाइलों को एक जार में पैक किया जाता है, और लक्षित प्लेटफार्म की पहचान करने वाले क्लासिफायर के साथ मेवेन सर्वर पर धक्का दिया जाता है। मेवेन-निर्भरता-प्लगइन तब मंच विशिष्ट जार को अनपैक करता है, और देशी पुस्तकालयों को लक्षित फ़ोल्डर में कॉपी करता है।
आम तौर पर मैं जावा प्रोग्राम चलाने के लिए mvn exec:java
का उपयोग करता हूं, लेकिन exec:java
उसी जेवीएम में मैवेन के रूप में अनुप्रयोग चलाता है, जो मुझे क्लासपाथ को संशोधित करने से रोकता है। चूंकि देशी निर्भरताओं को कक्षापथ में जोड़ा जाना चाहिए, इसलिए मुझे इसके बजाय mvn exec:exec
का उपयोग करने के लिए मजबूर होना पड़ता है। इस पोम के प्रासंगिक टुकड़ा है:
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Djava.library.path=target/lib</argument>
<argument>-classpath</argument>
<classpath />
<argument>com.example.app.MainClass</argument>
</arguments>
</configuration>
</plugin>
...
इस आवेदन के डिफ़ॉल्ट विन्यास के लिए ठीक काम करता है, लेकिन मैं आदेश पंक्ति पर कुछ वैकल्पिक पैरामीटर निर्दिष्ट करने के लिए सक्षम होना चाहते हैं। आदर्श रूप में, मैं इस तरह कुछ करने के लिए करना चाहते हैं:
mvn exec:exec -Dexec.args="-a <an argument> -b <another argument>"
दुर्भाग्य से, exec.args
चर निर्दिष्ट करने पोम (जो classpath की स्थापना की और एप्लिकेशन को चलाने के लिए आवश्यक हैं) में तर्क मैं अधिलेखित कर देता है। क्या इसके चारों ओर एक रास्ता है? मेरे पास पोम में जो कुछ है उसे ओवरराइट किए बिना कमांड लाइन पर कुछ वैकल्पिक तर्क निर्दिष्ट करने का सबसे अच्छा तरीका क्या है?
और कैसे वें जावा कोड में ese तर्कों का उपयोग किया जा सकता है, मेरा मतलब यह है कि: 'स्ट्रिंग [] args'? – zygimantus
@zygimantus आप चाहते हैं 'mvn exec: java -Dexec.mainClass = "path.to.your.class" -Dexec.args = "arg1 arg2" जो मूल प्रश्न के दायरे से बाहर है। – dr0i