首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在每次运行时在Maven中设置环境变量?

如何在每次运行时在Maven中设置环境变量?
EN

Stack Overflow用户
提问于 2012-02-08 17:09:09
回答 1查看 19.9K关注 0票数 7

在我的项目中,我们创建了一个Maven模块来获取特定的JBoss并解压缩。

然后,所有的测试用例都可以作为嵌入式容器在这个Jboss下运行。

我们使用jboss-ejb3- embedded -standalone来调用嵌入式容器,但是,它只是从环境变量中找到JBOSS_HOME并使用它来运行。因此,我们必须更新每个mvn安装的JBOSS_HOME。

我尝试通过引入exec- maven -plugin来实现这一点,如下所示:

代码语言:javascript
复制
    <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>

在控制台的输出中,我可以看到

代码语言:javascript
复制
[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。

代码语言:javascript
复制
<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>

事实证明是一样的。

是我的配置错了,还是有更好的方法?

EN

回答 1

Stack Overflow用户

发布于 2012-02-08 17:22:10

看一看Maven profiles

您可以定义一个用于测试的配置文件,一个用于生产的配置文件,并具有不同的属性,例如

代码语言:javascript
复制
<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插件中:

代码语言:javascript
复制
<environmentVariables>
    <JBOSS_HOME>
        ${jboss.home}
    </JBOSS_HOME>
</environmentVariables>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9190342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档