是否可以写"本地"脚本/钩子为maven + jenkins包装过程?

时间:2013-02-03 13:34:03

标签: java maven build jenkins hook

我使用jenkins构建包。我的包使用jankins环境变量BUILD_ID,它提供了构建日期:https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables

问题是,我需要在xml配置文件中使用该日期,在模式http://www.w3.org/2001/XMLSchema中的dateTime类型的元素中。

詹金斯使用格式

YYYY-MM-DD_hh-mm-ss
对于BUILD_ID var,

,而dateTime字段需要格式

YYYY-MM-DDTHH:MM:SS

(' T'而不是' _'在日期和时间之间,':'而不是' - '作为时间分离器)。

我知道jenkins的插件允许为BUILD_ID变量设置自定义日期格式,但我无法触摸jenkins。是否可以写一个" local"脚本/钩子(通过本地我的意思是在我的项目的范围内,没有任何外部工具的更改),它将从jenkins读取后转换该BUILD_ID?现在我用pom的元素中的那一行读取BUILD_ID:

<buildinfo.timestamp>${env.BUILD_ID}</buildinfo.timestamp>

1 个答案:

答案 0 :(得分:1)

有一个名为maven-timestamp-plugin的小型maven插件可能对您有所帮助。它以您喜欢的格式创建时间戳,并将其写入您可以访问的类似于Jenkins BUILD_ID的系统属性。

您的插件配置如下所示:

<plugin>
  <groupId>com.keyboardsamurais.maven</groupId>
  <artifactId>maven-timestamp-plugin</artifactId>
  <version>1.0</version>
  <configuration>
    <propertyName>timestamp</propertyName>
    <timestampPattern>yyyy-MM-ddTHH:mm:ss</timestampPattern>
  </configuration>
  <executions>
    <execution>
     <goals>
      <goal>create</goal>
     </goals>
    </execution>
  </executions>
</plugin>

...在您的XML文件中,您可以编写<buildinfo.timestamp>${timestamp}</buildinfo.timestamp>