Skip to content

[MJAR-300] maven jar plugin does not interpret build outputTimestamp correctly #444

@jira-importer

Description

@jira-importer

Henning Schmiedehausen opened MJAR-300 and commented

consider a minimal project that packages a jar:

% DATE=$(date -Iseconds) ; echo $DATE ; mvn -q clean package ; jar tvf target/jartest-0.1-SNAPSHOT.jar

2024-02-10T21:44:53-08:00

     0 Sat Feb 10 21:44:54 PST 2024 META-INF/
   568 Sat Feb 10 21:44:54 PST 2024 META-INF/MANIFEST.MF
     0 Sat Feb 10 21:44:54 PST 2024 META-INF/maven/
     0 Sat Feb 10 21:44:54 PST 2024 META-INF/maven/jartest/
     0 Sat Feb 10 21:44:54 PST 2024 META-INF/maven/jartest/jartest/
     5 Sat Feb 10 21:44:54 PST 2024 testfile.txt
   575 Sat Feb 10 21:39:50 PST 2024 META-INF/maven/jartest/jartest/pom.xml
    56 Sat Feb 10 21:44:54 PST 2024 META-INF/maven/jartest/jartest/pom.properties

Note how the timestamp returned by the date command and the timestamps of the entries in the jar are basically the same (around 21:44:53 - 21:44:54 on Feb 10th, 2024)

Now use that date as the project build timestamp:

DATE=$(date -Iseconds) ; echo $DATE ; mvn -q -Dproject.build.outputTimestamp=$DATE clean package ; jar tvf target/jartest-0.1-SNAPSHOT.jar
2024-02-10T21:46:30-08:00

     0 Sun Feb 11 05:46:30 PST 2024 META-INF/
   568 Sun Feb 11 05:46:30 PST 2024 META-INF/MANIFEST.MF
     0 Sun Feb 11 05:46:30 PST 2024 META-INF/maven/
     0 Sun Feb 11 05:46:30 PST 2024 META-INF/maven/jartest/
     0 Sun Feb 11 05:46:30 PST 2024 META-INF/maven/jartest/jartest/
     5 Sun Feb 11 05:46:30 PST 2024 testfile.txt
   575 Sun Feb 11 05:46:30 PST 2024 META-INF/maven/jartest/jartest/pom.xml
    56 Sun Feb 11 05:46:30 PST 2024 META-INF/maven/jartest/jartest/pom.properties

 

The timestamp and the entries in the jar differ by eight hours (the offset of my local timezone).

When forcing UTC:

DATE=$(TZ=UTC date -Iseconds) ; echo $DATE ; mvn -q -Dproject.build.outputTimestamp=$DATE clean package ; jar tvf target/jartest-0.1-SNAPSHOT.jar

2024-02-11T05:48:22+00:00

     0 Sun Feb 11 05:48:22 PST 2024 META-INF/
   568 Sun Feb 11 05:48:22 PST 2024 META-INF/MANIFEST.MF
     0 Sun Feb 11 05:48:22 PST 2024 META-INF/maven/
     0 Sun Feb 11 05:48:22 PST 2024 META-INF/maven/jartest/
     0 Sun Feb 11 05:48:22 PST 2024 META-INF/maven/jartest/jartest/
     5 Sun Feb 11 05:48:22 PST 2024 testfile.txt
   575 Sun Feb 11 05:48:22 PST 2024 META-INF/maven/jartest/jartest/pom.xml
    56 Sun Feb 11 05:48:22 PST 2024 META-INF/maven/jartest/jartest/pom.properties

The timestamp is "correct" but I passed it in as UTC but the jar plugin considers it "local time" and silently attaches PST as timezone. This is where the eight hours discrepancy come from.

This seems to be specific to the outputTimestamp parsing of the jar plugin. 

 

 

 

 

 

 

 

 


Affects: 3.3.0

Issue Links:

  • MJAR-263 Reproducible Builds: make entries in output jar files reproducible (order + timestamp)
    ("is caused by")

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpriority:majorMajor loss of functionwaiting-for-feedbackWaiting for 90 days until issues or pull request will be closed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions