我需要获取一些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");
但不幸的是结果是空的......
我做错了什么?
答案 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}
我在我们的应用程序中显示了这个页面。