2009-08-14 12 views
7

È possibile impostare variabili ambientali in un profilo di build anziché impostarle nella riga di comando?Riga comandi Maven

Per esempio, voglio abilitare il debugger quando sto usando il mio ambiente di test (-Denv = test).

voglio Maven per fare questo:

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

In questo modo, posso collegare rapidamente un debugger senza dover digitare la stessa linea ripetuto più e più.

Non credo che il mi aiuta in questo caso:

<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

risposta

11

Nelle versioni recenti di Maven è possibile attivare il debugger eseguendo mvnDebug piuttosto che mvn, il Il file mvnDebug bat/sh imposta MVN__DEBUG_OPTS e li passa a java.exe. I valori passati sono:

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

Se questo non è sufficiente, questo può funzionare (si noti che non ho ancora provato questo, io aggiornare una volta che ho). Maven legge proprietà con prefisso "env". dall'ambiente, potresti essere in grado di impostare le variabili di ambiente prefissando lo stesso. cioè .:

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

Aggiornamento: Il plugin infallibile permette di specify system properties da utilizzare durante l'esecuzione del test. La configurazione è la seguente:

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

Se nessuno di coloro che lavoro per voi, è possibile scrivere un piccolo plug-configurato nel tuo profilo che si lega alla fase di inizializzazione e imposta le variabili. Il plugin avrebbe configurazione come questa:

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

durante l'esecuzione il plugin sarebbe impostare ogni proprietà passò utilizzando System.setProperty(). Se i primi due non sono adatti o non funzionano, questo dovrebbe risolvere il problema.

+0

Hi Rich, Il comando mvnDebug ha funzionato, ma sembra che si blocchi un bel po 'e mangi molta memoria. Non ho ancora avuto fortuna con quelle altre opzioni, ma continuerò a provare. Walter –

Problemi correlati