通过自定义mojo访问Jenkins环境变量

时间:2014-01-06 17:10:38

标签: java maven jenkins environment-variables mojo

有可能这样做吗?

例如,可以执行以下操作:

System.getEnv("$(env.BUILD_URL)");

我无法访问Jenkins,所以无法自己尝试:(

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

假设你正在使用Maven(你已经标记了这个问题),我只需将以下内容添加到我的pom.xml文件中:

...
<properties>
    <!-- Hudson properties: see http://wiki.hudson-ci.org/display/HUDSON/Building+a+software+project#Buildingasoftwareproject-HudsonSetEnvironmentVariables -->
    <jenkins.buildId>${env.BUILD_ID}</jenkins.buildId>
    <jenkins.buildNumber>${env.BUILD_NUMBER}</jenkins.buildNumber>
    <jenkins.buildTag>${env.BUILD_TAG}</jenkins.buildTag>
    <jenkins.cvsBranch>${env.CVS_BRANCH}</jenkins.cvsBranch>
    <jenkins.executorNumber>${env.EXECUTOR_NUMBER}</jenkins.executorNumber>
    <jenkins.hudsonUrl>${env.HUDSON_URL}</jenkins.hudsonUrl>
    <jenkins.javaHome>${env.JAVA_HOME}</jenkins.javaHome>
    <jenkins.jobName>${env.JOB_NAME}</jenkins.jobName>
    <jenkins.svnRevision>${env.SVN_REVISION}</jenkins.svnRevision>
    <jenkins.workspace>${env.WORKSPACE}</jenkins.workspace>
</properties>
...

...然后从你的代码中你可以简单地做一个:

String url = System.getProperty("jenkins.hudsonUrl");  // could be null

将这些放入属性可以使生活更加简单,特别是在使用Maven配置文件来控制我的构建时。例如,我确保创建一个“jenkins”配置文件,当我在Jenkins构建服务器上构建时,该配置文件被激活。完成后,将设置所有上述jenkins属性。如果不作为jenkins配置文件运行,那些属性将设置为其他一些默认值。无论如何,这是另一个话题,但值得深思。希望它有意义。