2012-03-08 14 views
6

मुझे मैवेन के साथ कुछ परीक्षण निष्पादित करने की आवश्यकता है, और कमांड लाइन से पैरामीटर पास करना होगा।मैवेन से एक जावा पैरामीटर पास करें

मेरा जावा कोड पैरामीटर प्राप्त करना चाहिए: System.getenv ("my_parameter1");

और मैं नीचे दिए गए उदाहरण के रूप में pom.xml फ़ाइल में पैरामीटर को परिभाषित: (और बाद में, मैं pom.xml संशोधित साफ -Dmy_parameter1 = मान 1 स्थापित आम लाइन mvn से पैरामीटर प्राप्त करने के लिए चाहते हैं)

लेकिन यह काम नहीं करता है; System.getenv ("my_parameter1") शून्य लौटाता है। मुझे pom.xml फ़ाइल में पैरामीटर को कैसे परिभाषित करना चाहिए?

pom.xml

<project> 
    ... 
    <profiles> 
    <profile> 
     <properties> 
     <my_parameter1>value1</my_parameter1> 
     </properties> 
     <build> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <executions> 
       <execution> 
       <id>slowTest</id> 
       <phase>test</phase> 
       <goals> 
        <goal>test</goal> 
       </goals> 
       <configuration> 
        <skip>false</skip> 
        <includes> 
        <include>**/*Test.java</include> 
        <include>**/*TestSlow.java</include> 
        </includes> 
        <properties> 
        <my_parameter1>value1</my_parameter1> 
        </properties> 
       </configuration> 
       </execution> 
      </executions> 
      </plugin> 
     </plugins> 
     </build> 
    </profile> 
    </profiles> 
</project> 

उत्तर

16

System.getenv() पर्यावरण चर, जैसे PATH पढ़ता है। आप जो चाहते हैं उसे सिस्टम प्रॉपर्टी पढ़ने के लिए है। डीडी [सिस्टम प्रॉपर्टी नेम] = [वैल्यू] सिस्टम गुणों के लिए है, पर्यावरण चर नहीं। आप वातावरण चर का उपयोग करने के, इससे पहले कि आप Maven लांच वातावरण चर my_parameter1 स्थापित करने की ओएस विशेष विधि का उपयोग करें चाहते हैं

  1. :

    आपके पास दो विकल्प। विंडोज़ में, set my_parameter1=<value> का उपयोग करें, 'निक्स उपयोग export my_parameter1=<value> में।

  2. आप अपने कोड के भीतर से सिस्टम प्रॉपर्टी वैल्यू पढ़ने के लिए System.getProperty() का उपयोग कर सकते हैं।

उदाहरण:

String param = System.getProperty("my_parameter1"); 

आप अचूक प्लगइन विन्यास में, आप का उपयोग कर सकते हैं:

<configuration> 
    <systemPropertyVariables> 
     <my_property1>${my_property1}</my_property1> 
    </systemPropertyVariables> 
</configuration> 

कौन सा Maven संपत्ति _my_property1_ लेता है और यह भी सेट अपने परीक्षणों में।

इस here के बारे में अधिक जानकारी।

मुझे यकीन नहीं है कि मेवेन से सिस्टम गुण स्वचालित रूप से परीक्षणों के लिए पारित हो जाते हैं और/या फोर्क मोड प्रभावित होता है या नहीं, तो शायद यह स्पष्ट रूप से उन्हें पास करने का एक अच्छा विचार है।

+1

बस चेक किया गया: मेवेन सिस्टम गुण * स्वचालित रूप से परीक्षणों को पारित नहीं किया गया है। – SiKing

2

उपयोग

${env.my_parameter} 

pom.xml में वातावरण चर का उपयोग करने की।

आप को देखने के लिए जो चर

mvn help:system 

साथ स्थापित कर रहे हैं हालांकि सामान्य गुण उपयोग भी काम करना चाहिए मदद प्लगइन का उपयोग कर सकते हैं। बड़े संदर्भ में हालांकि मैं सोच रहा हूं ... आप क्या करना चाहते हैं? एक आसान समाधान हो सकता है।

2

मेवेन surefire प्लगइन में भी option to set environment variables है, बस इसे अपनी प्लगइन कॉन्फ़िगरेशन में जोड़ें।

<environmentVariables> 
    <my_parameter1>value</my_parameter1> 
</environmentVariables> 

मैं यह जरूरी है कि प्लगइन fork mode में चल रही है, जो डिफ़ॉल्ट है लगता है।

+0

फोर्क मोड के लिए +1 ... यह दस्तावेज़ में लिखा नहीं है। – JSlain

संबंधित मुद्दे