Переменной окружения с помощью Maven



я портировал проект из Eclipse в Maven, и мне нужно установить переменную среды, чтобы мой проект работал.



в Eclipse я перехожу к "Run - > Run Configuration" и на вкладке "environment" я устанавливаю "WSNSHELL_HOME" в значение "conf".



Как я могу сделать это с помощью Maven?



большое спасибо!

1189   6  

6 ответов:

вы можете просто передать его в командной строке, как

mvn -DmyVariable=someValue install

[обновление] обратите внимание, что порядок параметров является значительным - вам нужно указать любые параметры до команду(ы).[/Update]

в файле POM вы можете ссылаться на системные переменные (указанные в командной строке или в pom) как ${myVariable}, и переменные среды, как ${env.myVariable}. (спасибо комментаторам на поправка.)

обновление 2

хорошо, поэтому вы хотите передать свою системную переменную в свои тесты. Если - как я предполагаю-вы используете плагин Surefire для тестирования лучше всего указать необходимую системную переменную(ы) в pom, в вашем , например,

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            ...
            <configuration>
                ...
                <systemPropertyVariables>
                    <WSNSHELL_HOME>conf</WSNSHELL_HOME>
                </systemPropertyVariables>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>

The -D свойства не будут надежно распространяться от surefire-pluging до вашего теста (я не знаю, почему он работает с eclipse). При использовании maven в командной строке используйте argLine свойства, чтобы обернуть вашу собственность. Это передаст их на ваш тест

mvn -DargLine="-DWSNSHELL_HOME=conf" test

использовать System.getProperty чтобы прочитать значение в коде. Посмотрите на этой сообщение о разнице System.getenv и Sytem.getProperty.

есть плагин maven под названием свойства-maven-плагин этот гол set-system-properties для установки системных переменных. Это особенно полезно, если у вас есть файл, содержащий все эти свойства. Таким образом, вы можете прочитать файл свойств и установить их в качестве системной переменной.

другое решение было бы установить MAVEN_OPTS (или другие переменные окружения) в ${user.home}/.mavenrc (или %HOME%\mavenrc_pre.bat на windows).

так как Maven 3.3.1 есть новые возможности для установки параметров командной строки mvn, если это то, что вы на самом деле хотите:

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

вы можете обернуть свою команду maven в сценарий bash:

#!/bin/bash

export YOUR_VAR=thevalue
mvn test
unset YOUR_VAR

переменные среды в Maven, вы можете установить ниже.

http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariables http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#environmentVariables

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    ...
    <configuration>
        <includes>
            ...
        </includes>
        <environmentVariables>
            <WSNSHELL_HOME>conf</WSNSHELL_HOME>
        </environmentVariables>
    </configuration>
</plugin>

Comments

    Ничего не найдено.