在我的项目中,我们创建了一个 Maven 模块来获取特定的 JBoss AS 并解压缩。
然后所有的测试用例都可以作为嵌入式容器在这个 Jboss AS 下运行。
我们使用 jboss-ejb3-embedded-standalone 来调用嵌入式容器,但是,它只是从环境变量中找到 JBOSS_HOME 并使用它来运行。
因此,我们必须在每次 mvn 安装时更新 JBOSS_HOME。

我试图通过引入 exec-maven-plugin 在 maven 中做到这一点,如下所示:

    <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 时,它仍然在运行设置了 origin 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> 

结果是一样的。

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

请您参考如下方法:

看看Maven profiles .

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

<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> 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!