如何在每个环境的maven surefire中配置环境变量?

时间:2018-05-25 15:00:35

标签: maven bamboo maven-surefire-plugin

我正在尝试在竹子构建计划期间进行maven测试阶段。我的测试依赖于我在pom.xml中配置的一组环境变量。但是,这些值仅适用于一个环境,我想在多个环境(不同的主机IPS等)上执行相同的测试。我的Pom.xml看起来像这样:

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>

<configuration>

 <environmentVariables>
    <variableName>variableValue</variableName>
  </environmentVariables>

</configuration>

竹子计划的构建有一个阶段,通过一个简单的“清洁测试”来执行一个maven测试阶段&#39;命令行。我有超过10个环境变量,所以我想理想地避免将这些变量值传递给命令行,因为它会使它很长。如何配置maven surefire以包含多组环境变量(一个用于测试,一个用于prod),这样我就可以传递到命令行来获取环境变量,具体取决于我执行的竹子构建计划。所以类似于:mvn clean -D test。

1 个答案:

答案 0 :(得分:0)

提出问题的最佳解决方案是使用配置文件过滤和属性文件。 您需要配置以下文件夹树:

  • SRC
    • 测试
      • 的java
      • 轮廓资源
      • 资源

您需要在资源中放置一个属性文件,并将变量值声明为配置文件资源的链接:  变量= {}值 并且您需要在每个环境的profile-resources中创建单独的属性文件。

然后将其包含在您的pom.xml文件中:

  <profiles>
    <profile>
        <id>Name of first profile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <filter.properties>env1.properties</filter.properties>
        </properties>
    </profile>
    <profile>
        <id>Name of second profile</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <properties>
            <filter.properties>env2.properties</filter.properties>
        </properties>
    </profile>
</profiles>

<build>
    <filters>
        <filter>src/test/profile-resources/${filter.properties}</filter>
    </filters>
</build>

然后,您可以使用-P Maven命令自动调用每个配置文件,该命令可激活配置文件。 示例:mvn verify -P&#34;配置文件名称&#34;。

相关资源: