Variable de entorno con Maven

He transferido un proyecto de Eclipse a Maven y necesito establecer una variable de entorno para que mi proyecto funcione.

En Eclipse, voy a “Ejecutar -> Ejecutar configuraciones” y, bajo la pestaña “entorno”, configuro “WSNSHELL_HOME” al valor “conf”.

¿Cómo puedo hacer esto con Maven?

¡Muchas gracias!

Puedes pasarlo en la línea de comando, como

mvn -DmyVariable=someValue install 

[Actualización] Tenga en cuenta que el orden de los parámetros es significativo: debe especificar cualquier opción antes de los comandos. [/Actualizar]

Dentro del archivo POM, puede referirse a variables del sistema (especificadas en la línea de comando, o en el pom) como ${myVariable} , y variables de entorno como ${env.myVariable} . (Gracias a los comentaristas por la corrección).

Actualización2

OK, entonces quiere pasar su variable de sistema a sus pruebas. Si, como supongo, utiliza el plugin Surefire para la prueba, lo mejor es especificar la (s) variable (s) del sistema necesarias dentro del pom, en la sección de plugins , por ej.

   ...  org.apache.maven.plugins maven-surefire-plugin ...  ...  conf    ...   

Las propiedades -D no se propagarán de forma confiable desde el plugin infalible hasta su prueba (no sé por qué funciona con eclipse). Cuando use maven en la línea de comando, use la propiedad argLine para envolver su propiedad. Esto los pasará a su prueba

 mvn -DargLine="-DWSNSHELL_HOME=conf" test 

Usa System.getProperty para leer el valor en tu código. Eche un vistazo a esta publicación sobre la diferencia de System.getenv y Sytem.getProperty .

Hay un plugin maven llamado properties-maven-plugin; este proporciona un set-system-properties para establecer las variables del sistema. Esto es especialmente útil si tiene un archivo que contiene todas estas propiedades. Por lo tanto, puede leer un archivo de propiedad y configurarlo como variable del sistema.

Otra solución sería establecer MAVEN_OPTS (u otras variables de entorno) en ${user.home}/.mavenrc (o %HOME%\mavenrc_pre.bat en Windows).

Desde Maven 3.3.1 hay nuevas posibilidades para establecer parámetros de línea de comando mvn , si esto es lo que realmente quieres:

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

Puedes envolver tu comando maven en un script bash:

 #!/bin/bash export YOUR_VAR=thevalue mvn test unset YOUR_VAR