Переменная среды с Maven - PullRequest
       20

Переменная среды с Maven

67 голосов
/ 01 апреля 2011

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

В Eclipse я захожу в «Выполнить -> Выполнить настройки» и на вкладке «окружение» задаю для «WSNSHELL_HOME» значение «conf».

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

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

Ответы [ 6 ]

99 голосов
/ 01 апреля 2011

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

mvn -DmyVariable=someValue install

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

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

Update2

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

<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>
21 голосов
/ 03 апреля 2011

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

mvn -DargLine="-DWSNSHELL_HOME=conf" test

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

4 голосов
/ 02 декабря 2016

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

3 голосов
/ 03 октября 2018

Для переменной окружения в 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>
2 голосов
/ 08 марта 2018

Вы можете заключить команду maven в скрипт bash:

#!/bin/bash

export YOUR_VAR=thevalue
mvn test
unset YOUR_VAR
1 голос
/ 19 мая 2017

Другим решением было бы установить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...