|
36 | 36 | import java.util.HashSet;
|
37 | 37 | import java.util.List;
|
38 | 38 | import java.util.Map;
|
| 39 | +import java.util.Map.Entry; |
39 | 40 | import java.util.Optional;
|
40 | 41 | import java.util.Set;
|
41 | 42 | import java.util.function.BiPredicate;
|
|
64 | 65 | import io.quarkus.deployment.builditem.MainClassBuildItem;
|
65 | 66 | import io.quarkus.deployment.builditem.QuarkusBuildCloseablesBuildItem;
|
66 | 67 | import io.quarkus.deployment.builditem.TransformedClassesBuildItem;
|
| 68 | +import io.quarkus.deployment.builditem.TransformedClassesBuildItem.TransformedClass; |
67 | 69 | import io.quarkus.deployment.configuration.ClassLoadingConfig;
|
68 | 70 | import io.quarkus.deployment.pkg.JarUnsigner;
|
69 | 71 | import io.quarkus.deployment.pkg.PackageConfig;
|
@@ -648,9 +650,13 @@ private JarBuildItem buildThinJar(CurateOutcomeBuildItem curateOutcomeBuildItem,
|
648 | 650 | Path transformedZip = quarkus.resolve(TRANSFORMED_BYTECODE_JAR);
|
649 | 651 | fastJarJarsBuilder.setTransformed(transformedZip);
|
650 | 652 | try (FileSystem out = createNewReproducibleZipFileSystem(transformedZip, packageConfig)) {
|
651 |
| - for (Set<TransformedClassesBuildItem.TransformedClass> transformedSet : transformedClasses |
652 |
| - .getTransformedClassesByJar().values()) { |
653 |
| - for (TransformedClassesBuildItem.TransformedClass transformed : transformedSet) { |
| 653 | + // we make sure the entries are added in a reproducible order |
| 654 | + // we use Path#toString() to get a reproducible order on both Unix-based OSes and Windows |
| 655 | + for (Entry<Path, Set<TransformedClass>> transformedClassEntry : transformedClasses |
| 656 | + .getTransformedClassesByJar().entrySet().stream() |
| 657 | + .sorted(Comparator.comparing(e -> e.getKey().toString())).toList()) { |
| 658 | + for (TransformedClass transformed : transformedClassEntry.getValue().stream() |
| 659 | + .sorted(Comparator.comparing(TransformedClass::getFileName)).toList()) { |
654 | 660 | Path target = out.getPath(transformed.getFileName());
|
655 | 661 | if (transformed.getData() != null) {
|
656 | 662 | if (target.getParent() != null) {
|
|
0 commit comments