2009-08-14 10 views
7

Czy można ustawić zmienne środowiskowe w profilu kompilacji zamiast ustawiania ich w wierszu poleceń?Linia poleceń Maven

Na przykład chcę włączyć debugger, gdy korzystam z mojego środowiska testowego (-Denv = test).

Chcę Maven, aby to zrobić:

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

W ten sposób można szybko dołączyć debugger bez konieczności wpisywania samą linię powtarzane w kółko.

nie wierzą, że pomaga mi w tym przypadku:

<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> 

Walter

Odpowiedz

11

W ostatnich wersjach Maven można uaktywnić debugger uruchamiając mvnDebug zamiast mvn, Zestawy plików mvnDebug bat/sh MVN__DEBUG_OPTS i przekazuje je do java.exe. Przekazywane są następujące wartości:

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

Jeśli to nie wystarczy, to może pracować (zauważ, że nie zostały jeszcze przetestowane, będę aktualizować raz mam). Maven czyta właściwości z prefiksem "env." ze środowiska, możesz mieć możliwość ustawienia zmiennych środowiskowych przez prefiksowanie z tym samym. tj .:

<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> 

Aktualizacja: Wtyczka murowany pozwala specify system properties być stosowane podczas wykonywania testu. Konfiguracja jest następująca:

<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> 

Jeśli żadna z tych prac dla ciebie, to jest możliwe, aby napisać brakujące wtyczki skonfigurowany w swoim profilu, który wiąże się z fazą Inicjowanie i ustawia zmienne. Wtyczka musiałby konfigurację tak:

<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> 

podczas wykonywania wtyczki byłoby ustawić każdy przekazany personelowi System.setProperty(). Jeśli pierwsze dwa nie są odpowiednie lub nie działają, powinno to rozwiązać problem.

+0

Hi Rich, Komenda mvnDebug zadziałała, ale wydaje się, że zawiesi się całkiem sporo i zjem dużo pamięci. Jeszcze nie miałem szczęścia z tymi innymi opcjami, ale będę próbować dalej. Walter –

Powiązane problemy