@@ -350,7 +350,7 @@ private void buildUberJar0(CurateOutcomeBuildItem curateOutcomeBuildItem,
350
350
MainClassBuildItem mainClassBuildItem ,
351
351
ClassLoadingConfig classLoadingConfig ,
352
352
Path runnerJar ) throws Exception {
353
- try (FileSystem runnerZipFs = createNewZip (runnerJar , packageConfig )) {
353
+ try (FileSystem runnerZipFs = createNewReproducibleZipFileSystem (runnerJar , packageConfig )) {
354
354
355
355
log .info ("Building uber jar: " + runnerJar );
356
356
@@ -549,7 +549,7 @@ private JarBuildItem buildLegacyThinJar(CurateOutcomeBuildItem curateOutcomeBuil
549
549
Files .deleteIfExists (runnerJar );
550
550
IoUtils .createOrEmptyDir (libDir );
551
551
552
- try (FileSystem runnerZipFs = createNewZip (runnerJar , packageConfig )) {
552
+ try (FileSystem runnerZipFs = createNewReproducibleZipFileSystem (runnerJar , packageConfig )) {
553
553
554
554
log .info ("Building thin jar: " + runnerJar );
555
555
@@ -647,7 +647,7 @@ private JarBuildItem buildThinJar(CurateOutcomeBuildItem curateOutcomeBuildItem,
647
647
if (!transformedClasses .getTransformedClassesByJar ().isEmpty ()) {
648
648
Path transformedZip = quarkus .resolve (TRANSFORMED_BYTECODE_JAR );
649
649
fastJarJarsBuilder .setTransformed (transformedZip );
650
- try (FileSystem out = createNewZip (transformedZip , packageConfig )) {
650
+ try (FileSystem out = createNewReproducibleZipFileSystem (transformedZip , packageConfig )) {
651
651
for (Set <TransformedClassesBuildItem .TransformedClass > transformedSet : transformedClasses
652
652
.getTransformedClassesByJar ().values ()) {
653
653
for (TransformedClassesBuildItem .TransformedClass transformed : transformedSet ) {
@@ -668,7 +668,7 @@ private JarBuildItem buildThinJar(CurateOutcomeBuildItem curateOutcomeBuildItem,
668
668
//now generated classes and resources
669
669
Path generatedZip = quarkus .resolve (GENERATED_BYTECODE_JAR );
670
670
fastJarJarsBuilder .setGenerated (generatedZip );
671
- try (FileSystem out = createNewZip (generatedZip , packageConfig )) {
671
+ try (FileSystem out = createNewReproducibleZipFileSystem (generatedZip , packageConfig )) {
672
672
for (GeneratedClassBuildItem i : generatedClasses ) {
673
673
String fileName = fromClassNameToResourceName (i .getName ());
674
674
Path target = out .getPath (fileName );
@@ -703,7 +703,7 @@ private JarBuildItem buildThinJar(CurateOutcomeBuildItem curateOutcomeBuildItem,
703
703
.setResolvedDependency (applicationArchivesBuildItem .getRootArchive ().getResolvedDependency ())
704
704
.setPath (runnerJar ));
705
705
Predicate <String > ignoredEntriesPredicate = getThinJarIgnoredEntriesPredicate (packageConfig );
706
- try (FileSystem runnerZipFs = createNewZip (runnerJar , packageConfig )) {
706
+ try (FileSystem runnerZipFs = createNewReproducibleZipFileSystem (runnerJar , packageConfig )) {
707
707
copyFiles (applicationArchivesBuildItem .getRootArchive (), runnerZipFs , null , ignoredEntriesPredicate );
708
708
}
709
709
}
@@ -793,7 +793,7 @@ private JarBuildItem buildThinJar(CurateOutcomeBuildItem curateOutcomeBuildItem,
793
793
}
794
794
}
795
795
if (!rebuild ) {
796
- try (FileSystem runnerZipFs = createNewZip (initJar , packageConfig )) {
796
+ try (FileSystem runnerZipFs = createNewReproducibleZipFileSystem (initJar , packageConfig )) {
797
797
ResolvedDependency appArtifact = curateOutcomeBuildItem .getApplicationModel ().getAppArtifact ();
798
798
generateManifest (runnerZipFs , classPath .toString (), packageConfig , appArtifact ,
799
799
QuarkusEntryPoint .class .getName (),
@@ -997,7 +997,7 @@ public static String getJarFileName(ResolvedDependency dep, Path resolvedPath) {
997
997
}
998
998
999
999
private void packageClasses (Path resolvedDep , final Path targetPath , PackageConfig packageConfig ) throws IOException {
1000
- try (FileSystem runnerZipFs = createNewZip (targetPath , packageConfig )) {
1000
+ try (FileSystem runnerZipFs = createNewReproducibleZipFileSystem (targetPath , packageConfig )) {
1001
1001
Files .walkFileTree (resolvedDep , EnumSet .of (FileVisitOption .FOLLOW_LINKS ), Integer .MAX_VALUE ,
1002
1002
new SimpleFileVisitor <Path >() {
1003
1003
@ Override
@@ -1063,7 +1063,7 @@ private NativeImageSourceJarBuildItem buildNativeImageThinJar(CurateOutcomeBuild
1063
1063
Path libDir = targetDirectory .resolve (LIB );
1064
1064
Files .createDirectories (libDir );
1065
1065
1066
- try (FileSystem runnerZipFs = ZipUtils . newZip (runnerJar )) {
1066
+ try (FileSystem runnerZipFs = createNewReproducibleZipFileSystem (runnerJar , packageConfig )) {
1067
1067
1068
1068
log .info ("Building native image source jar: " + runnerJar );
1069
1069
@@ -1657,12 +1657,13 @@ public boolean decompile(Path jarToDecompile) {
1657
1657
}
1658
1658
}
1659
1659
1660
- private static FileSystem createNewZip (Path runnerJar , PackageConfig config ) throws IOException {
1660
+ private static FileSystem createNewReproducibleZipFileSystem (Path runnerJar , PackageConfig config ) throws IOException {
1661
1661
boolean useUncompressedJar = !config .jar ().compress ();
1662
1662
if (useUncompressedJar ) {
1663
- return ZipUtils .newZip (runnerJar , Map .of ("compressionMethod" , "STORED" ));
1663
+ return ZipUtils .createNewReproducibleZipFileSystem (runnerJar , Map .of ("compressionMethod" , "STORED" ),
1664
+ config .outputTimestamp ().orElse (null ));
1664
1665
}
1665
- return ZipUtils .newZip (runnerJar );
1666
+ return ZipUtils .createNewReproducibleZipFileSystem (runnerJar , config . outputTimestamp (). orElse ( null ) );
1666
1667
}
1667
1668
1668
1669
}
0 commit comments