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

Ata*_*hev 6 java maven jenkins

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

我已将此添加到pom.xml中

<properties>
    <jenkins.buildUrl>${env.BUILD_URL}</jenkins.buildUrl>
</properties>
Run Code Online (Sandbox Code Playgroud)

在使用mvn install进行构建时,我正在尝试获取变量

private static final String JENKINS_BUILD_URL = System.getProperty("jenkins.buildUrl");
Run Code Online (Sandbox Code Playgroud)

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

我做错了什么?

Aur*_*iot 5

猜猜您正在尝试将此值读入单元测试中吗?然后,您将必须配置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>
Run Code Online (Sandbox Code Playgroud)

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

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


小智 5

这是我如何在我的应用程序中实现的

在 pom.xml 中添加一个属性

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>      
    <jenkins.buildNumber>${env.BUILD_NUMBER}</jenkins.buildNumber>      
</properties>
Run Code Online (Sandbox Code Playgroud)

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

jenkins.build.number = ${jenkins.buildNumber}
Run Code Online (Sandbox Code Playgroud)

通过添加在 Maven 中启用过滤

jenkins.build.number = ${jenkins.buildNumber}
Run Code Online (Sandbox Code Playgroud)

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

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

将 maven 目标更改为干净的包 -Denv.BUILD_NUMBER=${BUILD_NUMBER}

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