मावेन के साथ पर्यावरण चर


85

मैंने ग्रहण से मावेन तक एक परियोजना को चित्रित किया है और मुझे अपनी परियोजना को काम करने के लिए एक पर्यावरण चर निर्धारित करने की आवश्यकता है।

ग्रहण में, मैं "रन -> रन कॉन्फ़िगरेशन" पर जाता हूं और, टैब "पर्यावरण" के तहत, मैं "WSNSHELL_HOME" मान "मान" पर सेट करता हूं।

मैं मावेन के साथ यह कैसे कर सकता हूं?

आपका बहुत बहुत धन्यवाद!


मैं आपके प्रोजेक्ट को पर्यावरण चर के बिना चलाने का सुझाव दूंगा। और फिर मावेन के लिए ले जाएँ।
खमरबाईस

3
यदि आपके सिस्टम के लिए यह उपयोगी है तो पर्यावरण चर का उपयोग छोड़ने का कोई कारण नहीं है और मुझे पूरा यकीन है कि मेरा समाधान काम करता है (मैं खुद का उपयोग करता हूं)। मेरे संकेत देखें 'System.getenv' / 'System.getProperty'।
FrVaBe 18

जवाबों:


120

आप बस इसे कमांड लाइन पर पास कर सकते हैं, जैसा कि

mvn -DmyVariable=someValue install

[अद्यतन] ध्यान दें कि मापदंडों का क्रम महत्वपूर्ण है - आपको कमांड (एस) से पहले किसी भी विकल्प को निर्दिष्ट करने की आवश्यकता है । [/अपडेट करें]

POM फ़ाइल के भीतर, आप सिस्टम चर (कमांड लाइन पर निर्दिष्ट, या pom में) ${myVariable}, और पर्यावरण चर के रूप में निर्दिष्ट कर सकते हैं ${env.myVariable}(सुधार के लिए टिप्पणीकारों को धन्यवाद।)

Update2

ठीक है, तो आप अपने सिस्टम चर को अपने परीक्षणों में पास करना चाहते हैं। यदि - जैसा कि मैं मानता हूं - आप परीक्षण के लिए अचूक प्लगइन का उपयोग करते हैं , तो सबसे अच्छा यह है कि आप अपने pluginsखंड में पोम के भीतर आवश्यक सिस्टम वेरिएबल को निर्दिष्ट करें , जैसे

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            ...
            <configuration>
                ...
                <systemPropertyVariables>
                    <WSNSHELL_HOME>conf</WSNSHELL_HOME>
                </systemPropertyVariables>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>

मुझे 'mvan test' लॉन्च करने की आवश्यकता है, यह काम नहीं करता है, यदि मैं mvan test -DWSNSHELL_HOME = लिखता हूं, तो मुझे अभी भी अपवाद java.io.ile.FileNotFoundException: null / wansnshell.conf मिलता है (ऐसी कोई फ़ाइल या निर्देशिका नहीं)
गियानलुका

2
@ जानकी, इसे दूसरे तरीके से आज़माएं, यानी mvn -DWSNSHELL_HOME=conf test
पेटर टॉर्क

नहीं ... :( मुझे अभी भी java.io.FileNotFoundException मिलती है: null / wsnshell.conf (ऐसी कोई फ़ाइल या निर्देशिका) नहीं ... कोड में मैंने चर को इस तरह से पढ़ा है .. System.getenv("WSNSHELL_HOME");क्या यह सही है?
Glluca

@ जानकी, एक मिनट रुको, क्या आप सीधे मावेन बिल्ड से ऐप चलाते हैं, या ...?
पेटर टॉर्क

43
आप दो सिस्टम गुणों के साथ पर्यावरण चर को भ्रमित कर रहे हैं। -D कमांड विकल्प केवल सिस्टम गुण सेट करता है।
राउटर लिवेन्स

25

-Dगुण अचूक-pluging अपने परीक्षण के लिए से विश्वसनीय प्रचारित नहीं किया जाएगा (मैं नहीं जानता कि क्यों यह ग्रहण के साथ काम करता है)। कमांड लाइन पर मावेन का उपयोग करते समय अपनी संपत्ति को लपेटने के लिए argLine संपत्ति का उपयोग करें । यह उन्हें आपके परीक्षण में पास कर देगा

mvn -DargLine="-DWSNSHELL_HOME=conf" test

System.getPropertyअपने कोड में मूल्य को पढ़ने के लिए उपयोग करें । करने के लिए एक नज़र इस के अंतर के बारे में पोस्ट System.getenvऔर Sytem.getProperty


2
आपको System.getProperty ("WSNSHELL_HOME") के साथ System.getenv का उपयोग करने के बजाय संपत्ति को पढ़ना चाहिए।
15

बिल्कुल सही, एक बहुत समय बिताने के बाद अन्य चीजों की कोशिश कर रहा है, यह एक मेरे लिए काम किया।
भूषण

यदि आपने अपने pom.xml में अचूक प्लगइन के लिए argLine पैरामीटर कॉन्फ़िगर किया है, तो ${argLine}प्लेसहोल्डर को जोड़ें , अन्यथा कमांड लाइन से पैरामीटर नहीं उठाए जाएंगे। उदाहरण:<argLine>-Duser.timezone=UTC ${argLine}</argLine>
खेदमिशजैकसन

यह मेरे लिए काम किया, धन्यवाद! मावेन परीक्षणों के लिए sys-props को कॉन्फ़िगर करने के लिए एक साफ उपकरण क्या है। अभी भी पहली नज़र में, यह बहुत भ्रामक है, क्यों यह उन्हें सीधे उपयोग नहीं कर सकता है, लेकिन एक अतिरिक्त तर्क की आवश्यकता है।
फि

9

आप अपने मावेन कमांड को बैश स्क्रिप्ट में लपेट सकते हैं:

#!/bin/bash

export YOUR_VAR=thevalue
mvn test
unset YOUR_VAR

अविश्वसनीय रूप से, यह एकमात्र तरीका है जो कि अचूक प्लगइन का उपयोग करके मेरे लिए पूरी तरह से काम करता है। POM में मैंने जो 10 या इतने env var सेट किए हैं, उनमें से दो को टेस्ट रन के दौरान नहीं देखा जाता है। यहां तक ​​कि अगर मैं उन्हें खोल में सेट करता हूं और फिर भी mvn install, वे अभी भी किसी तरह से अस्पष्ट हैं। हालांकि, अगर मैं एक शेल स्क्रिप्ट से चलता हूं, तो यह ठीक काम करता है! काश मुझे समझ में आता कि ऐसा क्यों होता है।
पीटी

मेरा मानना ​​है कि यह एक स्वीकृत उत्तर होना चाहिए क्योंकि यह सबसे सरल उपाय है
wtsiamruk

5

मावेन में पर्यावरण चर के लिए, आप नीचे सेट कर सकते हैं।

http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariables http://maven.apache.org/surefire/maven-failsafe.plugin/integration-test-mojo.html #पर्यावरण चर

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    ...
    <configuration>
        <includes>
            ...
        </includes>
        <environmentVariables>
            <WSNSHELL_HOME>conf</WSNSHELL_HOME>
        </environmentVariables>
    </configuration>
</plugin>

4

एक मावेन प्लगइन है जिसे गुण-मावेन- प्लगइन कहा जाता है यह एक set-system-propertiesसिस्टम चर सेट करने के लिए एक लक्ष्य प्रदान करता है । यह विशेष रूप से उपयोगी है यदि आपके पास इन सभी गुणों वाली फ़ाइल है। इसलिए आप एक संपत्ति फ़ाइल को पढ़ने और उन्हें सिस्टम चर के रूप में सेट करने में सक्षम हैं।


3

एक अन्य समाधान MAVEN_OPTS(या अन्य पर्यावरणीय चर) ${user.home}/.mavenrc(या %HOME%\mavenrc_pre.batखिड़कियों पर ) सेट करना होगा ।

Maven 3.3.1 के बाद से mvan कमांड लाइन पैरामीटर सेट करने की नई संभावनाएं हैं , यदि यह वही है जो आप वास्तव में चाहते हैं:

  • ${maven.projectBasedir}/.mvn/maven.config
  • ${maven.projectBasedir}/.mvn/jvm.config

1

अपने कोड में जोड़ें:

System.getProperty("WSNSHELL_HOME")

मावेन कमांड से मूल्य संपत्ति को संशोधित करें या जोड़ें:

mvn clean test -DargLine=-DWSNSHELL_HOME=yourvalue

यदि आप इसे एक्लिप्स में चलाना चाहते हैं, तो अपने डिबग / रन कॉन्फ़िगरेशन में VM तर्क जोड़ें

  • Run -> Run कॉन्फ़िगरेशन पर जाएं
  • टैब तर्क चुनें
  • अनुभाग VM तर्क में जोड़ें

-DWSNSHELL_HOME = yourvalue

छवि उदाहरण देखें

आपको पीओएम को संशोधित करने की आवश्यकता नहीं है


0

@ केविन के जवाब से दस्तावेज़ीकरण के बाद नीचे वाले ने मेरे लिए मावेन सुनिश्चित-फायर प्लगइन के साथ पर्यावरण चर स्थापित करने के लिए काम किया

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
    <environmentVariables>
        <WSNSHELL_HOME>conf</WSNSHELL_HOME>
    </environmentVariables>
</configuration>

0

आप _JAVA_OPTIONSचर के माध्यम से कुछ तर्क पारित कर सकते हैं ।

उदाहरण के लिए, इस तरह मावेन प्रॉक्सी झंडे के लिए एक चर को परिभाषित करें:

_JAVA_OPTIONS="-Dhttp.proxyHost=$http_proxy_host -Dhttp.proxyPort=$http_proxy_port -Dhttps.proxyHost=$https_proxy_host -Dhttps.proxyPort=$http_proxy_port"

और फिर उपयोग करें mvn clean install(यह स्वचालित रूप से उठाएगा _JAVA_OPTIONS)।

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