如何将Jenkins环境变量注入maven构建?

时间:2014-01-17 14:14:57

标签: java maven jenkins

我需要获取一些Jenkins环境变量,比如BUILD_NUMBER和BUILD_URL,并将它们作为变量注入我的Maven Java构建中。

我已将此添加到pom.xml

<properties>
    <jenkins.buildUrl>${env.BUILD_URL}</jenkins.buildUrl>
</properties>

并且在使用mvn install进行构建时,我正试图通过

获取变量
private static final String JENKINS_BUILD_URL = System.getProperty("jenkins.buildUrl");

但不幸的是结果是空的......

我做错了什么?

2 个答案:

答案 0 :(得分:4)

猜猜你是想在单元测试中读取这个值吗? 然后你必须配置surefire插件的环境变量:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-surefire-plugin</artifactId>
   <configuration>
       <environmentVariables>
           <jenkins.buildUrl>${env.BUILD_URL}</jenkins.buildUrl>
       </environmentVariables>
   </configuration>
</plugin>

如本文档中所述:http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariables

请注意,可以在其他插件中执行相同的操作,例如Maven Tomcat插件。

答案 1 :(得分:4)

这是我在我的应用程序中实现的方法

在pom.xml中添加属性

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>      
    <jenkins.buildNumber>${env.BUILD_NUMBER}</jenkins.buildNumber>      
</properties>

在.properties文件中创建一个新属性

jenkins.build.number = ${jenkins.buildNumber}

通过添加

启用maven过滤
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>

然后使用以下代码从java中读取它

properties.load(MyClass.class.getResourceAsStream("/project.properties"));
version = properties.getProperty("jenkins.build.number");

将maven目标更改为clean package -Denv.BUILD_NUMBER = $ {BUILD_NUMBER}

我在我们的应用程序中显示了这个页面。