Как установить переменные окружения в Maven для каждого запуска? - PullRequest
7 голосов
/ 08 февраля 2012

В моем проекте мы создали модуль Maven для получения JBoss AS и распаковали его.
Тогда все тестовые случаи могут быть запущены под этим Jboss AS как встроенный контейнер.
Мы используем jboss-ejb3-embedded-standalone для вызова встроенного контейнера, однако он просто находит JBOSS_HOME из переменных среды ииспользуйте это, чтобы бежать.Таким образом, мы должны обновить JBOSS_HOME для каждой установки mvn.

Я попытался сделать это в maven, введя exec-maven-plugin, как показано ниже:

    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <configuration>
        <executable>env</executable>
        <environmentVariables>
            <JBOSS_HOME>
                C:/Sample/embedded-container/jboss-${version.org.jboss.jbossas}
            </JBOSS_HOME>
        </environmentVariables>
    </configuration>
    <executions>
        <execution>
            <id>resetJbossHome</id>
            <phase>integration-test</phase>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

В выводе консоли яможно увидеть

[INFO] --- exec-maven-plugin:1.2.1:exec (resetJbossHome) @ test-embedded ---
....
JBOSS_HOME=C:/Sample/embedded-container/jboss-6.1.0.Final

....

Но при запуске JBOSS он по-прежнему работает с исходным набором JBOSS_HOME.

Кроме того, я пробовал использовать maven-antrun-plugin.

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>copyRelease</id>
            <phase>pre-integration-test</phase>
            <configuration>
                <tasks>
                    <exec executable="env">
       <env key="JBOSS_HOME" value="C:/Sample/embedded-container/jboss-${version.org.jboss.jbossas}"/>
    </exec>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Получается то же самое.

Я ошибаюсь в конфигурации или есть какой-то лучший способ?

1 Ответ

7 голосов
/ 08 февраля 2012

Посмотрите на Maven профили .

Вы можете определить один профиль для тестирования, другой для производства, с различными свойствами, например

<profiles>
  <profile>
    <id>test</id>
    <jboss.home>PATH TO JBOSS TEST INSTANCE</jboss.home>
  </profile>
  <profile>
    <id>prod</id>
    <jboss.home>PATH TO JBOSS PROD INSTANCE</jboss.home>
  </profile>
</profiles>

А в вашем плагине exec:

<environmentVariables>
    <JBOSS_HOME>
        ${jboss.home}
    </JBOSS_HOME>
</environmentVariables>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...