These are based on 2.3.0.M4
, both apps just simple projects from initializer, where demo1
is maven build and demo2
gradle build. With gradle, embedded classpath.idxfile
has wrong permissions, so CF push fails:
jvalkealahti@cypher:~/Downloads$ ls demo1/target/demo1-0.0.1-SNAPSHOT.jar
demo1/target/demo1-0.0.1-SNAPSHOT.jar
jvalkealahti@cypher:~/Downloads$ ls demo2/build/libs/demo2-0.0.1-SNAPSHOT.jar
demo2/build/libs/demo2-0.0.1-SNAPSHOT.jar
# unzipped those files
jvalkealahti@cypher:~/Downloads$ ls -lt demo1/target/BOOT-INF/classpath.idx
-rw-r--r-- 1 jvalkealahti jvalkealahti 519 Apr 12 14:01 demo1/target/BOOT-INF/classpath.idx
jvalkealahti@cypher:~/Downloads$ ls -lt demo2/build/libs/BOOT-INF/classpath.idx
---------- 1 jvalkealahti jvalkealahti 519 Feb 1 1980 demo2/build/libs/BOOT-INF/classpath.idx
This will then at least with CF push causing error:
FAILED
Error processing app files: Error processing app files in 'demo2-0.0.1-SNAPSHOT.jar': open /tmp/unzipped-app739748771/BOOT-INF/classpath.idx: permission denied
Comment From: scottfrederick
I can't re-create the issue with the file permissions on classpath.idx
with the Gradle plugin. I'll look into that more.
But I did notice in your example, and with further testing, that the Maven and Gradle plugins apply different timestamps to directories and files, in cases where the plugins are adding files to the archive.
With Maven, a redacted list of jar contents looks like this:
0 Mon Apr 13 11:24:24 CDT 2020 META-INF/
572 Mon Apr 13 11:24:24 CDT 2020 META-INF/MANIFEST.MF
# current date/time on directories added to root for loader classes
0 Mon Apr 13 11:24:24 CDT 2020 org/
0 Mon Apr 13 11:24:24 CDT 2020 org/springframework/
0 Mon Apr 13 11:24:24 CDT 2020 org/springframework/boot/
0 Mon Apr 13 11:24:24 CDT 2020 org/springframework/boot/loader/
# Feb 01 1980 on files added to root for loader classes
5303 Fri Feb 01 00:00:00 CST 1980 org/springframework/boot/loader/ClassPathIndexFile.class
0 Mon Apr 13 11:24:24 CDT 2020 BOOT-INF/
0 Mon Apr 13 11:24:24 CDT 2020 BOOT-INF/classes/
0 Mon Apr 13 11:24:20 CDT 2020 BOOT-INF/classes/com/
0 Mon Apr 13 11:24:20 CDT 2020 BOOT-INF/classes/com/example/
0 Mon Apr 13 11:24:20 CDT 2020 BOOT-INF/classes/com/example/test/
838 Mon Apr 13 11:24:20 CDT 2020 BOOT-INF/classes/com/example/test/TestApplication.class
1 Mon Apr 13 11:24:20 CDT 2020 BOOT-INF/classes/application.properties
# Feb 01 1980 on files added to BOOT-INF/lib
30287 Fri Feb 01 00:00:00 CST 1980 BOOT-INF/lib/spring-boot-jarmode-layertools-2.3.0.M4.jar
# current date on index files added to BOOT-INF
1237 Mon Apr 13 11:24:24 CDT 2020 BOOT-INF/classpath.idx
7849 Mon Apr 13 11:24:24 CDT 2020 BOOT-INF/layers.idx
With Gradle it looks like this:
0 Mon Apr 13 10:01:18 CDT 2020 META-INF/
377 Mon Apr 13 10:01:18 CDT 2020 META-INF/MANIFEST.MF
# Feb 01 1980 on directories and files added to root for loader classes
0 Fri Feb 01 00:00:00 CST 1980 org/
0 Fri Feb 01 00:00:00 CST 1980 org/springframework/
0 Fri Feb 01 00:00:00 CST 1980 org/springframework/boot/
0 Fri Feb 01 00:00:00 CST 1980 org/springframework/boot/loader/
5303 Fri Feb 01 00:00:00 CST 1980 org/springframework/boot/loader/ClassPathIndexFile.class
0 Mon Apr 13 10:01:18 CDT 2020 BOOT-INF/
0 Mon Apr 13 10:01:18 CDT 2020 BOOT-INF/classes/
0 Mon Apr 13 10:01:16 CDT 2020 BOOT-INF/classes/com/
0 Mon Apr 13 10:01:16 CDT 2020 BOOT-INF/classes/com/example/
0 Mon Apr 13 10:01:16 CDT 2020 BOOT-INF/classes/com/example/test/
838 Mon Apr 13 10:01:16 CDT 2020 BOOT-INF/classes/com/example/test/TestApplication.class
1 Mon Apr 13 10:01:16 CDT 2020 BOOT-INF/classes/application.properties
# Jan 31 1980 on directories and files added to BOOT-INF
30287 Thu Jan 31 18:00:00 CST 1980 BOOT-INF/lib/spring-boot-jarmode-layertools-2.3.0.M4.jar
996 Thu Jan 31 18:00:00 CST 1980 BOOT-INF/classpath.idx
7339 Thu Jan 31 18:00:00 CST 1980 BOOT-INF/layers.idx
This inconsistency seems like something we need to address, and could be related to permissions.
Comment From: jvalkeal
I'm on linux so maybe in this particular case there's some differences for default file flags vs macos and win. Also I don't seem to get that layertools
jar or layers.idx
:
0 2020-04-12 14:02 BOOT-INF/
0 2020-04-12 14:02 BOOT-INF/classes/
0 2020-04-12 14:02 BOOT-INF/classes/com/
0 2020-04-12 14:02 BOOT-INF/classes/com/example/
0 2020-04-12 14:02 BOOT-INF/classes/com/example/demo2/
738 2020-04-12 14:02 BOOT-INF/classes/com/example/demo2/Demo2Application.class
1 2020-04-12 14:02 BOOT-INF/classes/application.properties
0 2020-04-12 14:02 BOOT-INF/lib/
1432246 2020-04-04 10:36 BOOT-INF/lib/spring-boot-autoconfigure-2.3.0.M4.jar
1076155 2020-04-04 10:36 BOOT-INF/lib/spring-boot-2.3.0.M4.jar
4743 2020-04-04 10:36 BOOT-INF/lib/spring-boot-starter-logging-2.3.0.M4.jar
4748 2020-04-04 10:36 BOOT-INF/lib/spring-boot-starter-2.3.0.M4.jar
25058 2019-09-22 07:59 BOOT-INF/lib/jakarta.annotation-api-1.3.5.jar
1227620 2020-04-04 10:36 BOOT-INF/lib/spring-context-5.2.5.RELEASE.jar
372325 2020-04-04 10:36 BOOT-INF/lib/spring-aop-5.2.5.RELEASE.jar
685311 2020-04-04 10:36 BOOT-INF/lib/spring-beans-5.2.5.RELEASE.jar
282183 2020-04-04 10:36 BOOT-INF/lib/spring-expression-5.2.5.RELEASE.jar
1440907 2020-04-04 10:24 BOOT-INF/lib/spring-core-5.2.5.RELEASE.jar
309001 2020-04-04 10:36 BOOT-INF/lib/snakeyaml-1.26.jar
17463 2020-04-04 10:36 BOOT-INF/lib/log4j-to-slf4j-2.13.1.jar
290339 2019-03-10 17:44 BOOT-INF/lib/logback-classic-1.2.3.jar
471901 2019-03-10 17:44 BOOT-INF/lib/logback-core-1.2.3.jar
4592 2020-01-25 13:22 BOOT-INF/lib/jul-to-slf4j-1.7.30.jar
41472 2020-01-25 13:22 BOOT-INF/lib/slf4j-api-1.7.30.jar
23961 2020-04-04 10:24 BOOT-INF/lib/spring-jcl-5.2.5.RELEASE.jar
292244 2020-04-04 10:36 BOOT-INF/lib/log4j-api-2.13.1.jar
519 1980-02-01 00:00 BOOT-INF/classpath.idx
Comment From: philwebb
@jvalkeal can you share the project?
Comment From: jvalkeal
It's a mostly simplest gradle project you can get out from start.spring.io. Simplest app would eventually fail as there's no web layer but issue was about pushing an app.
However I just noticed that it works if you do:
cf push demo2 -p build/libs/demo2-0.0.1-SNAPSHOT.jar
But error I mentioned happens if you use manifest to push an app.
cat demo-manifest.yml
---
applications:
- name: demo2
host: demo2
memory: 1G
disk_quota: 1G
instances: 1
path: build/libs/demo2-0.0.1-SNAPSHOT.jar
$ cf push -f demo-manifest.yml
Pushing from manifest to org scdf-ci / space space-janne as <removed>...
Using manifest file /home/jvalkealahti/Downloads/demo2/demo-manifest.yml
Deprecation warning: Route component attributes 'domain', 'domains', 'host', 'hosts' and 'no-hostname' are deprecated. Found: host.
Please see https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#deprecated for the currently supported syntax and other app manifest deprecations. This feature will be removed in the future.
Using manifest file demo-manifest.yml
Updating app demo2 in org scdf-ci / space space-janne as <removed>...
OK
Using route demo2.cfapps.io
FAILED
Error processing app files: Error processing app files in 'build/libs/demo2-0.0.1-SNAPSHOT.jar': open /tmp/unzipped-app533390060/BOOT-INF/classpath.idx: permission denied
Not using manifest somehow works differently:
$ cf push demo2 -p build/libs/demo2-0.0.1-SNAPSHOT.jar
Pushing app demo2 to org scdf-ci / space space-janne as <removed>...
Getting app info...
Creating app with these attributes...
+ name: demo2
path: /home/jvalkealahti/Downloads/demo2/build/libs/demo2-0.0.1-SNAPSHOT.jar
routes:
+ demo2.cfapps.io
Creating app demo2...
Mapping routes...
Comparing local files to remote cache...
Packaging files to upload...
Uploading files...
219.82 KiB / 219.82 KiB [===========================================================================================================] 100.00% 2s
Waiting for API to complete processing files...
Staging app and tracing logs...
Downloading web_config_transform_buildpack...
Downloading dotnet_core_buildpack...
Downloading python_buildpack...
Downloading staticfile_buildpack...
Downloading java_buildpack...
Downloaded python_buildpack
Downloading nodejs_buildpack...
Downloaded java_buildpack
Downloading go_buildpack...
Downloaded dotnet_core_buildpack
Downloaded web_config_transform_buildpack
Downloading ruby_buildpack...
Downloading binary_buildpack...
Downloaded ruby_buildpack
Downloading dotnet_core_buildpack_beta...
Downloaded binary_buildpack
Downloading php_buildpack...
Downloaded nodejs_buildpack
Downloaded go_buildpack
Downloaded dotnet_core_buildpack_beta
Downloaded php_buildpack
Downloaded staticfile_buildpack
Cell 48a1dad0-0bbb-45e4-8a7b-db133df48532 creating container for instance 507aed1e-59db-4d75-802f-e423d1570704
Cell 48a1dad0-0bbb-45e4-8a7b-db133df48532 successfully created container for instance 507aed1e-59db-4d75-802f-e423d1570704
Downloading app package...
Downloaded app package (6.8M)
-----> Java Buildpack v4.29.1 (offline) | https://github.com/cloudfoundry/java-buildpack.git#864477c
-----> Downloading Jvmkill Agent 1.16.0_RELEASE from https://java-buildpack.cloudfoundry.org/jvmkill/bionic/x86_64/jvmkill-1.16.0-RELEASE.so (found in cache)
-----> Downloading Open Jdk JRE 1.8.0_242 from https://java-buildpack.cloudfoundry.org/openjdk/bionic/x86_64/openjdk-jre-1.8.0_242-bionic.tar.gz (found in cache)
Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.1s)
JVM DNS caching disabled in lieu of BOSH DNS caching
-----> Downloading Open JDK Like Memory Calculator 3.13.0_RELEASE from https://java-buildpack.cloudfoundry.org/memory-calculator/bionic/x86_64/memory-calculator-3.13.0-RELEASE.tar.gz (found in cache)
Loaded Classes: 10057, Threads: 250
-----> Downloading Client Certificate Mapper 1.11.0_RELEASE from https://java-buildpack.cloudfoundry.org/client-certificate-mapper/client-certificate-mapper-1.11.0-RELEASE.jar (found in cache)
-----> Downloading Container Security Provider 1.16.0_RELEASE from https://java-buildpack.cloudfoundry.org/container-security-provider/container-security-provider-1.16.0-RELEASE.jar (found in cache)
-----> Downloading Spring Auto Reconfiguration 2.11.0_RELEASE from https://java-buildpack.cloudfoundry.org/auto-reconfiguration/auto-reconfiguration-2.11.0-RELEASE.jar (found in cache)
Exit status 0
Uploading droplet, build artifacts cache...
Uploading droplet...
Uploading build artifacts cache...
Uploaded build artifacts cache (128B)
Uploaded droplet (49M)
Uploading complete
Cell 48a1dad0-0bbb-45e4-8a7b-db133df48532 stopping instance 507aed1e-59db-4d75-802f-e423d1570704
Cell 48a1dad0-0bbb-45e4-8a7b-db133df48532 destroying container for instance 507aed1e-59db-4d75-802f-e423d1570704
Cell 48a1dad0-0bbb-45e4-8a7b-db133df48532 successfully destroyed container for instance 507aed1e-59db-4d75-802f-e423d1570704
Waiting for app to start...
Start unsuccessful
Comment From: jvalkeal
Behaviour may also be different depending on which OS you're on(I'm on linux) and who/how that jar archive is opened. At least in my system this is what zipinfo shows:
$ zipinfo build/libs/demo2-0.0.1-SNAPSHOT.jar
Archive: build/libs/demo2-0.0.1-SNAPSHOT.jar
Zip file size: 8119286 bytes, number of entries: 100
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-17 09:53 META-INF/
-rw-r--r-- 2.0 unx 287 bl defN 20-Apr-17 09:53 META-INF/MANIFEST.MF
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/boot/
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/
-rw-r--r-- 2.0 unx 5303 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/ClassPathIndexFile.class
-rw-r--r-- 2.0 unx 6806 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/ExecutableArchiveLauncher.class
-rw-r--r-- 2.0 unx 3966 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/JarLauncher.class
-rw-r--r-- 2.0 unx 1535 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/LaunchedURLClassLoader$UseFastConnectionExceptionsEnumeration.class
-rw-r--r-- 2.0 unx 7704 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/LaunchedURLClassLoader.class
-rw-r--r-- 2.0 unx 5908 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/Launcher.class
-rw-r--r-- 2.0 unx 1536 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/MainMethodRunner.class
-rw-r--r-- 2.0 unx 266 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher$1.class
-rw-r--r-- 2.0 unx 1484 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher$ArchiveEntryFilter.class
-rw-r--r-- 2.0 unx 1953 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher$PrefixMatchingArchiveFilter.class
-rw-r--r-- 2.0 unx 21531 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher.class
-rw-r--r-- 2.0 unx 1750 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/WarLauncher.class
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/
-rw-r--r-- 2.0 unx 302 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/Archive$Entry.class
-rw-r--r-- 2.0 unx 511 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/Archive$EntryFilter.class
-rw-r--r-- 2.0 unx 3679 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/Archive.class
-rw-r--r-- 2.0 unx 6093 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$AbstractIterator.class
-rw-r--r-- 2.0 unx 2180 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$ArchiveIterator.class
-rw-r--r-- 2.0 unx 1857 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$EntryIterator.class
-rw-r--r-- 2.0 unx 1269 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class
-rw-r--r-- 2.0 unx 2443 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$SimpleJarFileArchive.class
-rw-r--r-- 2.0 unx 5259 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive.class
-rw-r--r-- 2.0 unx 2884 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$AbstractIterator.class
-rw-r--r-- 2.0 unx 1981 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$EntryIterator.class
-rw-r--r-- 2.0 unx 1081 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$JarFileEntry.class
-rw-r--r-- 2.0 unx 2528 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$NestedArchiveIterator.class
-rw-r--r-- 2.0 unx 7467 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive.class
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/
-rw-r--r-- 2.0 unx 485 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessData.class
-rw-r--r-- 2.0 unx 282 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile$1.class
-rw-r--r-- 2.0 unx 2680 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class
-rw-r--r-- 2.0 unx 3259 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile$FileAccess.class
-rw-r--r-- 2.0 unx 4015 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile.class
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/
-rw-r--r-- 2.0 unx 4976 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/AsciiBytes.class
-rw-r--r-- 2.0 unx 616 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/Bytes.class
-rw-r--r-- 2.0 unx 295 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord$1.class
-rw-r--r-- 2.0 unx 3401 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64End.class
-rw-r--r-- 2.0 unx 2004 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64Locator.class
-rw-r--r-- 2.0 unx 4682 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class
-rw-r--r-- 2.0 unx 6223 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryFileHeader.class
-rw-r--r-- 2.0 unx 4620 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryParser.class
-rw-r--r-- 2.0 unx 540 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryVisitor.class
-rw-r--r-- 2.0 unx 345 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/FileHeader.class
-rw-r--r-- 2.0 unx 11492 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/Handler.class
-rw-r--r-- 2.0 unx 3697 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarEntry.class
-rw-r--r-- 2.0 unx 299 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarEntryFilter.class
-rw-r--r-- 2.0 unx 2296 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile$1.class
-rw-r--r-- 2.0 unx 1233 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile$2.class
-rw-r--r-- 2.0 unx 1374 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile$JarFileType.class
-rw-r--r-- 2.0 unx 15603 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile.class
-rw-r--r-- 2.0 unx 1593 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFileEntries$1.class
-rw-r--r-- 2.0 unx 2046 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFileEntries$EntryIterator.class
-rw-r--r-- 2.0 unx 13994 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFileEntries.class
-rw-r--r-- 2.0 unx 702 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$1.class
-rw-r--r-- 2.0 unx 1250 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$2.class
-rw-r--r-- 2.0 unx 410 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$CloseAction.class
-rw-r--r-- 2.0 unx 4302 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class
-rw-r--r-- 2.0 unx 11523 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection.class
-rw-r--r-- 2.0 unx 3650 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/StringSequence.class
-rw-r--r-- 2.0 unx 1813 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/ZipInflaterInputStream.class
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jarmode/
-rw-r--r-- 2.0 unx 293 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jarmode/JarMode.class
-rw-r--r-- 2.0 unx 2201 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jarmode/JarModeLauncher.class
-rw-r--r-- 2.0 unx 1292 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jarmode/TestJarMode.class
drwxr-xr-x 2.0 unx 0 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/util/
-rw-r--r-- 2.0 unx 5174 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/util/SystemPropertyUtils.class
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-17 09:53 BOOT-INF/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-17 09:53 BOOT-INF/classes/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-17 09:53 BOOT-INF/classes/com/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-17 09:53 BOOT-INF/classes/com/example/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-17 09:53 BOOT-INF/classes/com/example/demo2/
-rw-r--r-- 2.0 unx 738 bl defN 20-Apr-17 09:53 BOOT-INF/classes/com/example/demo2/Demo2Application.class
-rw-r--r-- 2.0 unx 1 bl defN 20-Apr-17 09:53 BOOT-INF/classes/application.properties
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-17 09:53 BOOT-INF/lib/
-rw-rw-r-- 2.0 unx 1432246 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-boot-autoconfigure-2.3.0.M4.jar
-rw-rw-r-- 2.0 unx 1076155 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-boot-2.3.0.M4.jar
-rw-rw-r-- 2.0 unx 4743 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-boot-starter-logging-2.3.0.M4.jar
-rw-rw-r-- 2.0 unx 4748 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-boot-starter-2.3.0.M4.jar
-rw-rw-r-- 2.0 unx 25058 b- stor 19-Sep-22 07:59 BOOT-INF/lib/jakarta.annotation-api-1.3.5.jar
-rw-rw-r-- 2.0 unx 1227620 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-context-5.2.5.RELEASE.jar
-rw-rw-r-- 2.0 unx 372325 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-aop-5.2.5.RELEASE.jar
-rw-rw-r-- 2.0 unx 685311 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-beans-5.2.5.RELEASE.jar
-rw-rw-r-- 2.0 unx 282183 b- stor 20-Apr-04 10:36 BOOT-INF/lib/spring-expression-5.2.5.RELEASE.jar
-rw-r--r-- 2.0 unx 1440907 b- stor 20-Apr-04 10:24 BOOT-INF/lib/spring-core-5.2.5.RELEASE.jar
-rw-rw-r-- 2.0 unx 309001 b- stor 20-Apr-04 10:36 BOOT-INF/lib/snakeyaml-1.26.jar
-rw-rw-r-- 2.0 unx 17463 b- stor 20-Apr-04 10:36 BOOT-INF/lib/log4j-to-slf4j-2.13.1.jar
-rw-rw-r-- 2.0 unx 290339 b- stor 19-Mar-10 17:44 BOOT-INF/lib/logback-classic-1.2.3.jar
-rw-rw-r-- 2.0 unx 471901 b- stor 19-Mar-10 17:44 BOOT-INF/lib/logback-core-1.2.3.jar
-rw-r--r-- 2.0 unx 4592 b- stor 20-Jan-25 13:22 BOOT-INF/lib/jul-to-slf4j-1.7.30.jar
-rw-r--r-- 2.0 unx 41472 b- stor 20-Jan-25 13:22 BOOT-INF/lib/slf4j-api-1.7.30.jar
-rw-r--r-- 2.0 unx 23961 b- stor 20-Apr-04 10:24 BOOT-INF/lib/spring-jcl-5.2.5.RELEASE.jar
-rw-rw-r-- 2.0 unx 292244 b- stor 20-Apr-04 10:36 BOOT-INF/lib/log4j-api-2.13.1.jar
---------- 2.0 unx 519 bl defN 80-Feb-01 00:00 BOOT-INF/classpath.idx
100 files, 8227750 bytes uncompressed, 8099920 bytes compressed: 1.6%
Comment From: jvalkeal
Same for maven build:
zipinfo target/demo1-0.0.1-SNAPSHOT.jar
Archive: target/demo1-0.0.1-SNAPSHOT.jar
Zip file size: 8120729 bytes, number of entries: 105
drwxr-xr-x 2.0 unx 0 bX defN 20-Apr-12 14:01 META-INF/
-rw-r--r-- 2.0 unx 460 bl defN 20-Apr-12 14:01 META-INF/MANIFEST.MF
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/boot/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/boot/loader/
-rw-r--r-- 2.0 unx 5303 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/ClassPathIndexFile.class
-rw-r--r-- 2.0 unx 6806 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/ExecutableArchiveLauncher.class
-rw-r--r-- 2.0 unx 3966 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/JarLauncher.class
-rw-r--r-- 2.0 unx 1535 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/LaunchedURLClassLoader$UseFastConnectionExceptionsEnumeration.class
-rw-r--r-- 2.0 unx 7704 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/LaunchedURLClassLoader.class
-rw-r--r-- 2.0 unx 5908 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/Launcher.class
-rw-r--r-- 2.0 unx 1536 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/MainMethodRunner.class
-rw-r--r-- 2.0 unx 266 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher$1.class
-rw-r--r-- 2.0 unx 1484 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher$ArchiveEntryFilter.class
-rw-r--r-- 2.0 unx 1953 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher$PrefixMatchingArchiveFilter.class
-rw-r--r-- 2.0 unx 21531 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/PropertiesLauncher.class
-rw-r--r-- 2.0 unx 1750 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/WarLauncher.class
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/boot/loader/archive/
-rw-r--r-- 2.0 unx 302 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/Archive$Entry.class
-rw-r--r-- 2.0 unx 511 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/Archive$EntryFilter.class
-rw-r--r-- 2.0 unx 3679 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/Archive.class
-rw-r--r-- 2.0 unx 6093 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$AbstractIterator.class
-rw-r--r-- 2.0 unx 2180 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$ArchiveIterator.class
-rw-r--r-- 2.0 unx 1857 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$EntryIterator.class
-rw-r--r-- 2.0 unx 1269 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class
-rw-r--r-- 2.0 unx 2443 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive$SimpleJarFileArchive.class
-rw-r--r-- 2.0 unx 5259 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/ExplodedArchive.class
-rw-r--r-- 2.0 unx 2884 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$AbstractIterator.class
-rw-r--r-- 2.0 unx 1981 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$EntryIterator.class
-rw-r--r-- 2.0 unx 1081 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$JarFileEntry.class
-rw-r--r-- 2.0 unx 2528 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive$NestedArchiveIterator.class
-rw-r--r-- 2.0 unx 7467 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/archive/JarFileArchive.class
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/boot/loader/data/
-rw-r--r-- 2.0 unx 485 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessData.class
-rw-r--r-- 2.0 unx 282 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile$1.class
-rw-r--r-- 2.0 unx 2680 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class
-rw-r--r-- 2.0 unx 3259 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile$FileAccess.class
-rw-r--r-- 2.0 unx 4015 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/data/RandomAccessDataFile.class
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/boot/loader/jar/
-rw-r--r-- 2.0 unx 4976 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/AsciiBytes.class
-rw-r--r-- 2.0 unx 616 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/Bytes.class
-rw-r--r-- 2.0 unx 295 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord$1.class
-rw-r--r-- 2.0 unx 3401 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64End.class
-rw-r--r-- 2.0 unx 2004 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64Locator.class
-rw-r--r-- 2.0 unx 4682 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class
-rw-r--r-- 2.0 unx 6223 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryFileHeader.class
-rw-r--r-- 2.0 unx 4620 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryParser.class
-rw-r--r-- 2.0 unx 540 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/CentralDirectoryVisitor.class
-rw-r--r-- 2.0 unx 345 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/FileHeader.class
-rw-r--r-- 2.0 unx 11492 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/Handler.class
-rw-r--r-- 2.0 unx 3697 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarEntry.class
-rw-r--r-- 2.0 unx 299 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarEntryFilter.class
-rw-r--r-- 2.0 unx 2296 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile$1.class
-rw-r--r-- 2.0 unx 1233 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile$2.class
-rw-r--r-- 2.0 unx 1374 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile$JarFileType.class
-rw-r--r-- 2.0 unx 15603 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFile.class
-rw-r--r-- 2.0 unx 1593 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFileEntries$1.class
-rw-r--r-- 2.0 unx 2046 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFileEntries$EntryIterator.class
-rw-r--r-- 2.0 unx 13994 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarFileEntries.class
-rw-r--r-- 2.0 unx 702 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$1.class
-rw-r--r-- 2.0 unx 1250 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$2.class
-rw-r--r-- 2.0 unx 410 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$CloseAction.class
-rw-r--r-- 2.0 unx 4302 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class
-rw-r--r-- 2.0 unx 11523 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/JarURLConnection.class
-rw-r--r-- 2.0 unx 3650 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/StringSequence.class
-rw-r--r-- 2.0 unx 1813 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jar/ZipInflaterInputStream.class
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/boot/loader/jarmode/
-rw-r--r-- 2.0 unx 293 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jarmode/JarMode.class
-rw-r--r-- 2.0 unx 2201 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jarmode/JarModeLauncher.class
-rw-r--r-- 2.0 unx 1292 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/jarmode/TestJarMode.class
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 org/springframework/boot/loader/util/
-rw-r--r-- 2.0 unx 5174 bl defN 80-Feb-01 00:00 org/springframework/boot/loader/util/SystemPropertyUtils.class
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 BOOT-INF/
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 BOOT-INF/classes/
drwxr-xr-x 2.0 unx 0 b- stor 20-Apr-12 14:01 BOOT-INF/classes/com/
drwxr-xr-x 2.0 unx 0 b- stor 20-Apr-12 14:01 BOOT-INF/classes/com/example/
drwxr-xr-x 2.0 unx 0 b- stor 20-Apr-12 14:01 BOOT-INF/classes/com/example/demo1/
drwxr-xr-x 2.0 unx 0 b- stor 20-Apr-12 14:01 META-INF/maven/
drwxr-xr-x 2.0 unx 0 b- stor 20-Apr-12 14:01 META-INF/maven/com.example/
drwxr-xr-x 2.0 unx 0 b- stor 20-Apr-12 14:01 META-INF/maven/com.example/demo1/
-rw-r--r-- 2.0 unx 738 bl defN 20-Apr-12 14:01 BOOT-INF/classes/com/example/demo1/Demo1Application.class
-rw-r--r-- 2.0 unx 1 bl defN 20-Apr-12 14:01 BOOT-INF/classes/application.properties
-rw-r--r-- 2.0 unx 1764 bl defN 20-Apr-12 13:00 META-INF/maven/com.example/demo1/pom.xml
-rw-r--r-- 2.0 unx 60 bl defN 20-Apr-12 14:01 META-INF/maven/com.example/demo1/pom.properties
drwxr-xr-x 2.0 unx 0 bl defN 20-Apr-12 14:01 BOOT-INF/lib/
-rw-r--r-- 2.0 unx 4748 b- stor 20-Apr-03 10:59 BOOT-INF/lib/spring-boot-starter-2.3.0.M4.jar
-rw-r--r-- 2.0 unx 1076155 b- stor 20-Apr-03 10:59 BOOT-INF/lib/spring-boot-2.3.0.M4.jar
-rw-r--r-- 2.0 unx 1227620 b- stor 20-Mar-24 11:25 BOOT-INF/lib/spring-context-5.2.5.RELEASE.jar
-rw-r--r-- 2.0 unx 372325 b- stor 20-Mar-24 11:25 BOOT-INF/lib/spring-aop-5.2.5.RELEASE.jar
-rw-r--r-- 2.0 unx 685311 b- stor 20-Mar-24 11:25 BOOT-INF/lib/spring-beans-5.2.5.RELEASE.jar
-rw-r--r-- 2.0 unx 282183 b- stor 20-Mar-24 11:25 BOOT-INF/lib/spring-expression-5.2.5.RELEASE.jar
-rw-r--r-- 2.0 unx 1432246 b- stor 20-Apr-03 10:59 BOOT-INF/lib/spring-boot-autoconfigure-2.3.0.M4.jar
-rw-r--r-- 2.0 unx 4743 b- stor 20-Apr-03 10:59 BOOT-INF/lib/spring-boot-starter-logging-2.3.0.M4.jar
-rw-r--r-- 2.0 unx 290339 b- stor 17-Mar-31 20:20 BOOT-INF/lib/logback-classic-1.2.3.jar
-rw-r--r-- 2.0 unx 471901 b- stor 17-Mar-31 20:19 BOOT-INF/lib/logback-core-1.2.3.jar
-rw-r--r-- 2.0 unx 17463 b- stor 20-Feb-25 19:54 BOOT-INF/lib/log4j-to-slf4j-2.13.1.jar
-rw-r--r-- 2.0 unx 292244 b- stor 20-Feb-25 19:52 BOOT-INF/lib/log4j-api-2.13.1.jar
-rw-r--r-- 2.0 unx 4592 b- stor 19-Dec-16 22:00 BOOT-INF/lib/jul-to-slf4j-1.7.30.jar
-rw-r--r-- 2.0 unx 25058 b- stor 19-Aug-02 11:08 BOOT-INF/lib/jakarta.annotation-api-1.3.5.jar
-rw-r--r-- 2.0 unx 1440907 b- stor 20-Mar-24 11:24 BOOT-INF/lib/spring-core-5.2.5.RELEASE.jar
-rw-r--r-- 2.0 unx 23961 b- stor 20-Mar-24 11:24 BOOT-INF/lib/spring-jcl-5.2.5.RELEASE.jar
-rw-r--r-- 2.0 unx 309001 b- stor 20-Feb-28 09:07 BOOT-INF/lib/snakeyaml-1.26.jar
-rw-r--r-- 2.0 unx 41472 b- stor 19-Dec-16 22:03 BOOT-INF/lib/slf4j-api-1.7.30.jar
-rw-r--r-- 2.0 unx 519 bl defN 20-Apr-12 14:01 BOOT-INF/classpath.idx
105 files, 8229747 bytes uncompressed, 8100667 bytes compressed: 1.6%
Comment From: scottfrederick
@jvalkeal The permissions problem with Gradle should be fixed in the next 2.3.0.BUILD-SNAPSHOT
. The issue remains open while I look at timestamps from Maven.
Comment From: jvalkeal
@scottfrederick yes, it works now, thanks!
Comment From: scottfrederick
All the concerns mentioned here have been fixed except the timestamps on classpath.idx
and layers.idx
. That concern is being addressed in #21005.