2009-08-14 11 views
7

क्या कमांड लाइन में सेट करने के विरोध में बिल्ड प्रोफाइल में पर्यावरणीय चर सेट करना संभव है?मेवेन कमांड लाइन

उदाहरण के लिए, जब मैं अपने परीक्षण वातावरण (-Denv = test) का उपयोग कर रहा हूं, तो मैं डीबगर को सक्षम करना चाहता हूं।

मैं Maven ऐसा करना चाहते हैं:

export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n" 

इस तरह, मैं जल्दी पर एक ही बार-बार लाइन लिखे बिना एक डिबगर संलग्न कर सकते हैं।

मैं नहीं मानता कि इस मामले में मुझे मदद करता है:

<plugin> 
... 
<!-- Automatically enable the debugger when running Jetty --> 
        <argLine>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n</argLine> 
       </configuration> 
... 
</plugin> 

वाल्टर

उत्तर

11

Maven के हाल के संस्करणों में आप mvnDebug बजाय चल mvn द्वारा डिबगर सक्रिय कर सकते हैं, mvnDebug bat/sh फ़ाइल mVN__DEBUG_OPTS सेट करता है और उन्हें java.exe पर भेजता है। मूल्यों पारित कर रहे हैं:

set MAVEN_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 

अगर वह पर्याप्त नहीं है, यह काम कर सकते हैं (ध्यान दें मैं अभी तक इस परीक्षण नहीं किया गया है एक बार मेरे पास है, मैं अपडेट कर देंगे)। मेवेन "env।" के साथ prefixed गुण पढ़ता है पर्यावरण से, आप इसके साथ उपसर्ग करके पर्यावरण चर सेट करने में सक्षम हो सकते हैं। यानी .:

<profile> 
    <id>dev</id> 
    <properties> 
    <env.MAVEN_OPTS>-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000<env.MAVEN_OPTS> 
    </properties> 
</profile> 

अद्यतन: अचूक प्लगइन परीक्षण निष्पादन के दौरान प्रयोग की जाने वाली specify system properties करने की अनुमति देता। विन्यास इस प्रकार है:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
    <systemProperties> 
     <property> 
     <name>propertyName</name> 
     <value>propertyValue</value> 
     </property> 
    </systemProperties> 
    </configuration> 
</plugin> 

यदि आप के लिए उन में से कोई भी काम, यह संभव है को आरम्भ चरण को बांधता है और अपने चर सेट अपने प्रोफ़ाइल में विन्यस्त एक छोटे से प्लगइन लिखने के लिए। प्लगइन इस तरह विन्यास होगा:

<plugin> 
    <groupId>name.seller.rich</groupId> 
    <artifactId>maven-environment-plugin</artifactId> 
    <version>0.0.1</version> 
    <executions> 
    <execution> 
     <id>set-properties</id> 
     <phase>initialize</phase> 
     <goals> 
     <goal>set-properties</goal> 
     </goals> 
    </execution> 
    </executions>        
    <configuration> 
    <properties> 
     <env.MAVEN_OPTS>-Xdebug -Xnoagent -Djava.compiler=NONE 
      -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000<env.MAVEN_OPTS> 
    </properties> 
    </configuration> 
</plugin> 

निष्पादन के दौरान प्लगइन प्रत्येक पारित कर दिया संपत्ति System.setProperty का उपयोग कर स्थापित करेगा()। यदि पहले दो उपयुक्त नहीं हैं या काम नहीं करते हैं तो इसे आपकी समस्या का समाधान करना चाहिए।

+0

हाय रिच, mvnDebug कमांड काम करता था, लेकिन ऐसा लगता है कि यह काफी हद तक लटका हुआ है और बहुत सारी मेमोरी खाती है। मेरे पास अभी तक उन अन्य विकल्पों के साथ कोई भाग्य नहीं है, लेकिन मैं कोशिश करता रहूंगा। वाल्टर –