Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-9693

maven.build.timestamp.format is not obeyed in maven builds

    Details

    • Similar Issues:

      Description

      Since Maven 2.1 it is possible to control the format of the maven.build.timestamp property by setting the maven.build.timestamp.format property. This works correctly with mvn version 3.0.3:

      pom.xml
      <project xmlns="http://maven.apache.org/POM/4.0.0"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>invalid.example.test</groupId>
          <artifactId>test</artifactId>
          <version>1.0-SNAPSHOT</version>
          <packaging>jar</packaging>
          <properties>
              <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
              <build.timestamp>${maven.build.timestamp}</build.timestamp>
          </properties>
          <build>
              <resources>
                  <resource>
                      <directory>src/main/filtered-resources</directory>
                      <filtering>true</filtering>
                  </resource>
              </resources>
          </build>
      </project>
      
      src/main/filtered-resources/test.properties
      Build-Timestamp: ${build.timestamp}
      
      target/classes/test.properties
      Build-Timestamp: 2011-05-15T18:56:20+1000
      

      but in Jenkins 1.411 the default timestamp format is used instead:

      target/classes/test.properties
      Build-Timestamp: 20110515-1857
      

        Attachments

          Issue Links

            Activity

            danc86 Dan C created issue -
            Hide
            danc86 Dan C added a comment -

            Presumably related to JENKINS-8573, where it looks like the "fix" was to manually interpolate the maven.build.timestamp property in Jenkins, thereby skipping all of maven's usual handling for it.

            Show
            danc86 Dan C added a comment - Presumably related to JENKINS-8573 , where it looks like the "fix" was to manually interpolate the maven.build.timestamp property in Jenkins, thereby skipping all of maven's usual handling for it.
            danc86 Dan C made changes -
            Field Original Value New Value
            Link This issue is related to JENKINS-8573 [ JENKINS-8573 ]
            Hide
            cromack Chris Romack added a comment -

            So if maven.build.timestamp.format is ignored, is there another way to specify a custom timestamp format? I am running maven 3.0.3, Jenkins 1.428 and it is still not honoring maven.build.timestamp.format. Thanks.

            Show
            cromack Chris Romack added a comment - So if maven.build.timestamp.format is ignored, is there another way to specify a custom timestamp format? I am running maven 3.0.3, Jenkins 1.428 and it is still not honoring maven.build.timestamp.format. Thanks.
            Hide
            jasonchaffee Jason Chaffee added a comment - - edited

            I too, need to find a way to honor the timestamp format as the default breaks the build as I cannot have "-" in the format. Works fine in maven outside of jenkins though.

            Show
            jasonchaffee Jason Chaffee added a comment - - edited I too, need to find a way to honor the timestamp format as the default breaks the build as I cannot have "-" in the format. Works fine in maven outside of jenkins though.
            Hide
            patrickc patrick clancey added a comment - - edited

            I have the same problem as Jason, broken builds when building with Jenkins. Has anyone found a work-around?

            There is a work-around using a Groovy snippet here...
            http://stackoverflow.com/questions/802677/adding-the-current-date-with-maven2-filtering

            Whilst not being particularly elegant, at least my builds are now working, which is always a plus! So a thanks to romaintaz for this.

            Show
            patrickc patrick clancey added a comment - - edited I have the same problem as Jason, broken builds when building with Jenkins. Has anyone found a work-around? There is a work-around using a Groovy snippet here... http://stackoverflow.com/questions/802677/adding-the-current-date-with-maven2-filtering Whilst not being particularly elegant, at least my builds are now working, which is always a plus! So a thanks to romaintaz for this.
            Hide
            jasonchaffee Jason Chaffee added a comment -

            The most disturbing part of this is that the build(s) work differently in Jenkins then they do simply running on the command-line. Not a very good thing if you are trying to have consistent and reproducible builds.

            Show
            jasonchaffee Jason Chaffee added a comment - The most disturbing part of this is that the build(s) work differently in Jenkins then they do simply running on the command-line. Not a very good thing if you are trying to have consistent and reproducible builds.
            Hide
            mathias_dam Mathias Dam added a comment -

            I have to agree with Jason Chaffee. While it is mostly just annoying, it begs the question: If this doesn't work as a command line build using Maven, what else might be different?

            Show
            mathias_dam Mathias Dam added a comment - I have to agree with Jason Chaffee. While it is mostly just annoying, it begs the question: If this doesn't work as a command line build using Maven, what else might be different?
            Hide
            allenservedio allenservedio added a comment -

            I wound up creating this timestamp via the Codehaus Build Number plugin (http://mojo.codehaus.org/buildnumber-maven-plugin/create-timestamp-mojo.html). Here is the Maven config that I used (in my plugin dependency management):

                                  <plugin>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>buildnumber-maven-plugin</artifactId>
                                    <version>1.0</version>
                                    <executions>
                                      <execution>
                                        <phase>generate-resources</phase>
                                        <goals>
                                          <goal>create-timestamp</goal>
                                        </goals>
                                      </execution>
                                    </executions>
                                    <configuration>
                                      <timestampFormat>yyyyMMddHHmmssSSS</timestampFormat>
                                      <timestampPropertyName>releaseTimestamp</timestampPropertyName>
                                    </configuration>
                                  </plugin>
            

            Am I correct that the reason this was not fixed already is that the point in the maven lifecycle where the statically formatted timestamp is created, the pom file(s) have not been evaluated. As such, it does not have access to this property (maven.build.timestamp.format) and so does not know that the user has defined it? If that is true, is there something else that can be used in Jenkin's Maven integration that can get access to this property and use it correctly?

            Thanks!
            Allen

            Show
            allenservedio allenservedio added a comment - I wound up creating this timestamp via the Codehaus Build Number plugin ( http://mojo.codehaus.org/buildnumber-maven-plugin/create-timestamp-mojo.html ). Here is the Maven config that I used (in my plugin dependency management): <plugin> <groupId> org.codehaus.mojo </groupId> <artifactId> buildnumber-maven-plugin </artifactId> <version> 1.0 </version> <executions> <execution> <phase> generate-resources </phase> <goals> <goal> create-timestamp </goal> </goals> </execution> </executions> <configuration> <timestampFormat> yyyyMMddHHmmssSSS </timestampFormat> <timestampPropertyName> releaseTimestamp </timestampPropertyName> </configuration> </plugin> Am I correct that the reason this was not fixed already is that the point in the maven lifecycle where the statically formatted timestamp is created, the pom file(s) have not been evaluated. As such, it does not have access to this property (maven.build.timestamp.format) and so does not know that the user has defined it? If that is true, is there something else that can be used in Jenkin's Maven integration that can get access to this property and use it correctly? Thanks! Allen
            Hide
            adam_rofer Adam Rofer added a comment - - edited

            All of the above workarounds provide different timestamps in each module in a multi-module build. The only thing I managed to get working was the following code:

            <plugin>
                <groupId>com.github.goldin</groupId>
                <artifactId>timestamp-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>set-specific-timestamp</id>
                        <goals>
                            <goal>timestamp</goal>
                        </goals>
                        <phase>initialize</phase>
                        <configuration>
                            <time>{{ 
                                     def newdate = null;
                                     try {
                                         newdate = Date.parse( "${maven.build.timestamp.format}", "${maven.build.timestamp}");
                                     } catch (java.text.ParseException e) {
                                         newdate = Date.parse( "yyyyMMdd-HHmm", "${maven.build.timestamp}");
                                         println "THANKS JENKINS, FOR JENKINS-9693";
                                     }
                                     newdate 
                             }}</time>
                            <timestamp>
                                <property>actual-timestamp</property>
                                <pattern>${maven.build.timestamp.format}</pattern>
                            </timestamp>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            

            ...and then use actual-timestamp as your timestamp property.
            This assumes you already have maven.build.timestamp.format set as a property.

            Note that you can put whatever pattern you want in the <pattern> field, in this case it just formats it the way you originally wanted it

            Also note that this will only reach minute resolution on Jenkins builds since that's what Jenkins munges it to.

            Show
            adam_rofer Adam Rofer added a comment - - edited All of the above workarounds provide different timestamps in each module in a multi-module build. The only thing I managed to get working was the following code: <plugin> <groupId>com.github.goldin</groupId> <artifactId>timestamp-maven-plugin</artifactId> <executions> <execution> <id>set-specific-timestamp</id> <goals> <goal>timestamp</goal> </goals> <phase>initialize</phase> <configuration> <time>{{ def newdate = null; try { newdate = Date.parse( "${maven.build.timestamp.format}", "${maven.build.timestamp}"); } catch (java.text.ParseException e) { newdate = Date.parse( "yyyyMMdd-HHmm", "${maven.build.timestamp}"); println "THANKS JENKINS, FOR JENKINS-9693"; } newdate }}</time> <timestamp> <property>actual-timestamp</property> <pattern>${maven.build.timestamp.format}</pattern> </timestamp> </configuration> </execution> </executions> </plugin> ...and then use actual-timestamp as your timestamp property. This assumes you already have maven.build.timestamp.format set as a property. Note that you can put whatever pattern you want in the <pattern> field, in this case it just formats it the way you originally wanted it Also note that this will only reach minute resolution on Jenkins builds since that's what Jenkins munges it to.
            Hide
            xhawk Tomi Savolainen added a comment -

            Reproduced on Jenkins ver. 1.486

            Show
            xhawk Tomi Savolainen added a comment - Reproduced on Jenkins ver. 1.486
            Hide
            marcomsousa Marco Sousa added a comment -

            I migrate from Hudson to Jenkins and now I have this bug. In hudson work's fine.

            Show
            marcomsousa Marco Sousa added a comment - I migrate from Hudson to Jenkins and now I have this bug. In hudson work's fine.
            Hide
            jensh Jens Hohmuth added a comment -

            Still broken for me in Jenkins version 1.511

            Show
            jensh Jens Hohmuth added a comment - Still broken for me in Jenkins version 1.511
            Hide
            rbierman Ron Bierman added a comment -

            Fixed this issue in the maven-interceptors project. (https://github.com/jenkinsci/maven-interceptors/pull/2).

            We need to release a new version of that project and update the maven-plugin project so it uses that new version.

            Show
            rbierman Ron Bierman added a comment - Fixed this issue in the maven-interceptors project. ( https://github.com/jenkinsci/maven-interceptors/pull/2 ). We need to release a new version of that project and update the maven-plugin project so it uses that new version.
            Hide
            jclaybaugh Jonathan Claybaugh added a comment -

            My $.02 it would be useful to have this fixed. Inconsistencies between maven on the command line and via Jenkins !good.

            Show
            jclaybaugh Jonathan Claybaugh added a comment - My $.02 it would be useful to have this fixed. Inconsistencies between maven on the command line and via Jenkins !good.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Ron Bierman
            Path:
            maven-agent/src/main/java/hudson/maven/agent/Main.java
            maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java
            maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
            pom.xml
            http://jenkins-ci.org/commit/maven-interceptors/021aba7769f46965103686b4ab01de5dcadc0530
            Log:
            Fixed issue: JENKINS-9693
            Removed the call to request.getProjectBuildingRequest() because this call creates a new ProjectBuildingRequest object and set's the BuildStartTime null.
            Maven takes care of this by it self later.

            Modified repository location in the pom.xml.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Ron Bierman Path: maven-agent/src/main/java/hudson/maven/agent/Main.java maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java pom.xml http://jenkins-ci.org/commit/maven-interceptors/021aba7769f46965103686b4ab01de5dcadc0530 Log: Fixed issue: JENKINS-9693 Removed the call to request.getProjectBuildingRequest() because this call creates a new ProjectBuildingRequest object and set's the BuildStartTime null. Maven takes care of this by it self later. Modified repository location in the pom.xml.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Ron Bierman
            Path:
            .gitignore
            maven-agent/pom.xml
            maven-agent/src/main/java/hudson/maven/agent/Main.java
            maven-interceptor/pom.xml
            maven3-agent/.gitignore
            maven3-agent/pom.xml
            maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java
            maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/RealFilterOutputStream.java
            maven3-agent/src/main/resources/org/jvnet/hudson/maven3/agent/classworlds.conf
            maven3-interceptor-commons/pom.xml
            maven3-interceptor-commons/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java
            maven3-interceptor-commons/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java
            maven3-interceptor-commons/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
            maven3-interceptor-commons/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
            maven3-interceptor-commons/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
            maven3-interceptor/.gitignore
            maven3-interceptor/pom.xml
            maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
            maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java
            maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java
            maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java
            maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java
            maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java
            maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java
            maven31-agent/pom.xml
            maven31-agent/src/main/java/jenkins/maven3/agent/Maven31Agent.java
            maven31-agent/src/main/java/jenkins/maven3/agent/Maven31Main.java
            maven31-agent/src/main/java/jenkins/maven3/agent/RealFilterOutputStream.java
            maven31-agent/src/main/resources/jenkins/maven3/agent/classworlds.conf
            maven31-interceptor/pom.xml
            maven31-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
            maven31-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven31Interceptor.java
            maven31-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven31Launcher.java
            pom.xml
            http://jenkins-ci.org/commit/maven-interceptors/7005329394fb515a70b6aa4a37e45167fefda86a
            Log:
            Merge branch 'master' into JENKINS-9693

            Conflicts:
            maven-agent/src/main/java/hudson/maven/agent/Main.java
            maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Ron Bierman Path: .gitignore maven-agent/pom.xml maven-agent/src/main/java/hudson/maven/agent/Main.java maven-interceptor/pom.xml maven3-agent/.gitignore maven3-agent/pom.xml maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/RealFilterOutputStream.java maven3-agent/src/main/resources/org/jvnet/hudson/maven3/agent/classworlds.conf maven3-interceptor-commons/pom.xml maven3-interceptor-commons/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java maven3-interceptor-commons/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java maven3-interceptor-commons/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java maven3-interceptor-commons/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java maven3-interceptor-commons/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java maven3-interceptor/.gitignore maven3-interceptor/pom.xml maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestBuilder.java maven3-interceptor/src/main/java/org/apache/maven/cli/MavenExecutionRequestsBuilderException.java maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven3Launcher.java maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/HudsonMavenExecutionResult.java maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectBuildResult.java maven3-interceptor/src/main/java/org/jvnet/hudson/maven3/listeners/MavenProjectInfo.java maven31-agent/pom.xml maven31-agent/src/main/java/jenkins/maven3/agent/Maven31Agent.java maven31-agent/src/main/java/jenkins/maven3/agent/Maven31Main.java maven31-agent/src/main/java/jenkins/maven3/agent/RealFilterOutputStream.java maven31-agent/src/main/resources/jenkins/maven3/agent/classworlds.conf maven31-interceptor/pom.xml maven31-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java maven31-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven31Interceptor.java maven31-interceptor/src/main/java/org/jvnet/hudson/maven3/launcher/Maven31Launcher.java pom.xml http://jenkins-ci.org/commit/maven-interceptors/7005329394fb515a70b6aa4a37e45167fefda86a Log: Merge branch 'master' into JENKINS-9693 Conflicts: maven-agent/src/main/java/hudson/maven/agent/Main.java maven3-agent/src/main/java/org/jvnet/hudson/maven3/agent/Maven3Main.java
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Christoph Kutzinski
            Path:
            maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java
            http://jenkins-ci.org/commit/maven-interceptors/8b8c85a5fad5900a09b78e6cc5603e9d580fd89a
            Log:
            Merge pull request #2 from rbierman/JENKINS-9693

            [Fixed JENKINS-9693] maven.build.timestamp.format is not obeyed in maven builds

            Compare: https://github.com/jenkinsci/maven-interceptors/compare/142041fa53ce...8b8c85a5fad5

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Christoph Kutzinski Path: maven3-interceptor/src/main/java/org/apache/maven/cli/DefaultMavenExecutionRequestBuilder.java http://jenkins-ci.org/commit/maven-interceptors/8b8c85a5fad5900a09b78e6cc5603e9d580fd89a Log: Merge pull request #2 from rbierman/ JENKINS-9693 [Fixed JENKINS-9693] maven.build.timestamp.format is not obeyed in maven builds Compare: https://github.com/jenkinsci/maven-interceptors/compare/142041fa53ce...8b8c85a5fad5
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Christoph Kutzinski
            Path:
            pom.xml
            http://jenkins-ci.org/commit/maven-plugin/dae6ef31fc5152d65f5543f61f1c911fcb0dbd38
            Log:
            [Fixed JENKINS-9693] maven.build.timestamp.format is not obeyed in maven
            builds (integrate maven-interceptors 1.5)

            Compare: https://github.com/jenkinsci/maven-plugin/compare/d73f82ed2a23...dae6ef31fc51

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Christoph Kutzinski Path: pom.xml http://jenkins-ci.org/commit/maven-plugin/dae6ef31fc5152d65f5543f61f1c911fcb0dbd38 Log: [Fixed JENKINS-9693] maven.build.timestamp.format is not obeyed in maven builds (integrate maven-interceptors 1.5) Compare: https://github.com/jenkinsci/maven-plugin/compare/d73f82ed2a23...dae6ef31fc51
            Hide
            jglick Jesse Glick added a comment -

            PR 839 claimed related to this.

            Show
            jglick Jesse Glick added a comment - PR 839 claimed related to this.
            jglick Jesse Glick made changes -
            Remote Link This issue links to "PR 839 (Web Link)" [ 11404 ]
            Hide
            jglick Jesse Glick added a comment -

            There is a commit by @kutzi claiming to fix this; should this still be open?

            Show
            jglick Jesse Glick added a comment - There is a commit by @kutzi claiming to fix this; should this still be open?
            ircbot Jenkins IRC Bot made changes -
            Component/s maven-plugin [ 16033 ]
            Component/s maven2 [ 15487 ]
            Hide
            aja4482 Anthony Agresta added a comment -

            After updating to the latest version of Jenkins, this issue appears to be fixed.

            Show
            aja4482 Anthony Agresta added a comment - After updating to the latest version of Jenkins, this issue appears to be fixed.
            Hide
            danielbeck Daniel Beck added a comment -

            Comment indicates this has been resolved.

            Show
            danielbeck Daniel Beck added a comment - Comment indicates this has been resolved.
            danielbeck Daniel Beck made changes -
            Status Open [ 1 ] Resolved [ 5 ]
            Resolution Fixed [ 1 ]
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 139867 ] JNJira + In-Review [ 188730 ]

              People

              • Assignee:
                Unassigned
                Reporter:
                danc86 Dan C
              • Votes:
                32 Vote for this issue
                Watchers:
                30 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: