Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Page properties


Status
 
Status
colourBlue
titleWIP
Version 
Issue(s)
Jira
serverASF JIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
keyMNG-6276
Sources 
Developer(s)


...

  • Timestamps:
    • Timestamp in pom.properties generated by maven-archiver (MSHARED-494 (tick))
    • Timestamp in plugin.xml and plugin-help.xml descriptors generated by maven-plugin-tools-generator (MPLUGIN-326 (tick))
    • Timestamp in MANIFEST.MF (Bnd-LastModified) generated by Felix maven-bundle-plugin
    • Timestamps in ZIP/JAR files: file last modification time/date in central directory and file entry headers + possible optional fields "X5455_ExtendedTimestamp" (PLEXUS-ARCHIVER-48)
    • Timestamps in generated javadoc HTML files (can be disabled with javadoc options "notimestamp" and "bottom")
    • Timestamps in bytecode generated from Groovy code (added by GroovyClassLoader.addTimeStamp())
  • Username:
    • Username in MANIFEST.MF (Built-By) generated by maven-archiver (MSHARED-661 (tick))
    • UID/GID in tar file entries
  • Ordering:
    • Order of the file entries in a ZIP/JAR file (depends on file system order)
    • Order of the entries in the MANIFEST (MSHARED-511(tick))
    • Order of goals in plugin.xml generated by maven-plugin-tools (MPLUGIN-261(tick))
    • Order of the methods of the ObjectFactory.java file generated by JAXB/xjc (JAXB-598(tick))
    • Order of components in META-INF/plexus/components.xml generated by plexus metadata
  • Tools Versions:
    • exact JDK version used to build in MANIFEST.MF (Build-Jdk) generated by maven-archiver (MSHARED-797(tick))
      Notice that keeping the major version of the JDK used still makes sense, since it has an influence on generated bytecode: with the same source code and defined -target version, javac from JDK 6, 7, 8, ... do not produce the same bytecode. If we want to isolate the generated binary from JDK used, the compiler used will have to not be javac provided by running JDK (see Using Non-Javac Compilers)
    • exact Maven version used to build in MANIFEST.MF (Created-By) generated by maven-archiver (MSHARED-799(tick))
    • exact Maven version used to build in META-INF/.../pom.properties generated by maven-archiver (MSHARED-800(tick))

Line endings is also a problem, and even if we could force given line endings for build-generated text files (MANIFEST, pom.properties...), it would be hazardous to try to change the line endings of the resource files.

...

issue trackingdescription
MSHARED-661 (fixed in maven-archiver-3.4.0)

META-INF/MANIFEST.MF

maven-archiver adds "Built-By: <username>" Manifest entry: the entry was removed

MSHARED-796 (fixed in maven-archiver-3.4.0)

META-INF/MANIFEST.MFmaven-archiver adds "Built-Jdk: <detailed java version>" Manifest entry: better replaced with "Built-Jdk: <java specification version>"
MSHARED-494 (fixed in maven-archiver 3.1.0)META-INF/maven/$groupId/$artifactId/pom.propertiesTimestamp in pom.properties
MSHARED-800META-INF/maven/$groupId/$artifactId/pom.propertiesMaven version in pom.properties
MPLUGIN-261 (fixed in maven-plugin-plugin 3.3)META-INF/maven/plugin.xmlgenerated plugin.xml is non-deterministic
MPLUGIN-326 (fixed in maven-plugin-plugin 3.5.1)META-INF/maven/plugin.xml
META-INF/maven/$groupId/$artifactId/plugin-help.xml
Timestamp in plugin.xml and plugin-help.xml descriptors generated by maven-plugin-tools-generator
plexus-containers issue #8 (fixed in plexus-component-metadata 2.0.0)
META-INF/plexus/components.xmlsort components when generating META-INF/plexus/components.xml

META-INF/MANIFEST.MF

"Private-Package" manifest entry content (created by felix:bundle) has not the same order between builds


META-INF/sisu/javax.inject.Named

META-INF/sisu/javax.inject.Named content (created by sisu-maven-plugin) has non reproducible order for content

zip entries timestamp and order
plexus-archiver issue #48avoid timestamp issues in archives created by plexus-archiver (widely used in Maven plugins creating jar, zip, war, tar... archives)

sort zip entries to make zip entries order reproducible
support SOURCE_DATE_EPOCH environment variable or equivalent: see https://reproducible-builds.org/docs/timestamps/
MSOURCES-120apply reproducible zip (entries order and timestamp) to maven-source-plugin
MJAR-263apply reproducible zip (entries order and timestamp) to maven-jar-plugin
issues fixed in maven-archiver will have to be picked by 9 other plugins managed by Apache Maven team (acr, ear, ejb, jlink, rar, war, site, javadoc, assembly) and perhaps other plugins managed outside Apache Maven team

...