check:

$ for v in 2.14.3 2.15.0-rc1 2.15.0-rc2 2.15.0-rc3 2.15.0 2.15.1 ; do
  base="https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/$v"
  echo "$v: $base"
  curl -s $base/jackson-core-$v.module | grep md5 | tail -1
  curl -s $base/jackson-core-$v.jar | md5sum
done

gives following results:

2.14.3: https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.14.3
          "md5": "abb25b80cda20ddc2cd3bbd8fccd0d34"
abb25b80cda20ddc2cd3bbd8fccd0d34  -
2.15.0-rc1: https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.15.0-rc1
          "md5": "f025e63d6acf12f6ab7a9395b2e7839f"
22a62f740a8ae4d18f92fd046d430c33  -
2.15.0-rc2: https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.15.0-rc2
          "md5": "2fa06351c3e0b189188ea52dd6bed370"
ba468eaacf916f088c5416d2a78ddbc1  -
2.15.0-rc3: https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.15.0-rc3
          "md5": "7ce0e69a172f3fc5fdbe17084d41db7"
9880100f0b6076fe1f405182a93b4bb0  -
2.15.0: https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.15.0
          "md5": "6791b06af1f5268de81b4002e2e5753b"
884fa0e39483933acc1168184c002bb9  -
2.15.1: https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.15.1
          "md5": "a01d167430c8ccd5635ce0a74c5a7e30"
48a8701b4f142e2fe3b8cae07a2af4d2  -

checksum in module.json was ok in 2.14.3 (and previously: I checked older releases), but since early 2.15 rc, it's broken

looking at build output:

[INFO] --- moditect-maven-plugin:1.0.0.Final:add-module-info (add-module-infos) @ jackson-core ---
[INFO] 
[INFO] --- gradle-module-metadata-maven-plugin:0.4.0:gmm (default) @ jackson-core ---
[INFO] 
[INFO] --- maven-shade-plugin:3.4.1:shade (shade-jackson-core) @ jackson-core ---
...
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing /var/maven/app/target/jackson-core-2.15.1.jar with /var/maven/app/target/jackson-core-2.15.1-shaded.jar

need to switch order between shade and gmm goals as gmm does not fingerprint the jar file that is published = the shaded one

Comment From: hboutemy

notice: bug found while checking Reproducible Builds https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/com/fasterxml/jackson/core/README.md now that the jar itself is reproducible (after https://github.com/FasterXML/oss-parent/pull/75 ), this new issue becomes more visible

Comment From: hboutemy

fix is simply about changing order of 2 plugins in pom.xml https://github.com/FasterXML/jackson-core/blob/2.16/pom.xml#L163

Comment From: cowtowncoder

Merged the fix -- help with verification would be much appreciated.

One question: it looks like maven-jar-plugin comes after GMM plugin; is that problematic? I assume not (checksum only on classes?), but wanted to ask since I think some artifacts are still modified after it.

Comment From: hboutemy

@cowtowncoder mvn buildplan:list is your friend to easily see the build plan without executing it

it gives now

package                | maven-jar-plugin                    | 3.3.0       | jar               | default-jar           
process-resources      | moditect-maven-plugin               | 1.0.0.Final | add-module-info   | add-module-infos      
package                | maven-shade-plugin                  | 3.4.1       | shade             | shade-jackson-core    
package                | gradle-module-metadata-maven-plugin | 0.4.0       | gmm               | default               
package                | maven-site-plugin                   | 3.12.1      | attach-descriptor | attach-descriptor     
package                | find-and-replace-maven-plugin       | 1.1.0       | find-and-replace  | exec                  
install                | maven-install-plugin                | 3.1.0       | install           | default-install       

everything looks fine: - jar creates the original jar - moditect add a module info to the jar - shades replaces the jar with a shaded one - gmm creates the Gradle module.json that references the previous jar (that won't be modified any more) - site attach descriptor - find-and-reploace updates the pom files that will be pushed to Central: given it has not been fingerprinted by gmm, it's ok to do it here

Comment From: hboutemy

(notice: I see that the phase column in buildplan:list is sometimes wrong, but that has no impact, the order is the effective one, it's just the guessing of why execution happens that is a little buggy: while at it, issue opened https://github.com/mojohaus/buildplan-maven-plugin/issues/183 )

Comment From: cowtowncoder

@hboutemy Thanks. It is good to get verification since I do not think I can necessarily validate that any given ordering is correct wrt processing (do not know the parts intimately enough to have strong opinion).

Comment From: hboutemy

FYI, I was able to reproduce Jackson-core 2.15.2 https://github.com/jvm-repo-rebuild/reproducible-central/blob/master/content/com/fasterxml/jackson/core/README.md (will be updated tonight)

what a great result!

other artifacts have some unexpected small issues, I'll continue to investigate

Comment From: cowtowncoder

@hboutemy Thank you for verifying jackson-core! Looking forward to reports on remaining issues.

Comment From: reto-hoehener

Would love to have a version with this fix.

Comment From: pjfanning

Would love to have a version with this fix.

  • Maven Central won't let you can't change a release once released
  • if the issue is still happening in 2.19.1, we can investigate why the values are still be generated incorrectly

Comment From: reto-hoehener

I'm sorry I intended to ask this in https://github.com/mojohaus/buildplan-maven-plugin/issues/183, but must have followed the link here.