24 Commits
Author SHA1 Message Date
Junggi Kim 823744c0b2 Use a map to look up layer index child nodes
LayersIndex.Node kept its children in a list and scanned that list
linearly to find the child for each path segment. Building the index is
therefore O(entries x siblings), a cost that is dominated by the largest
flat directory in the jar: BOOT-INF/lib/ for the dependencies, and any
bundled resource directory such as a front-end build output.

Keep the children in a LinkedHashMap keyed by the segment name so that
lookups are constant time. Insertion order is preserved, so the order in
which buildIndex() walks the tree is unchanged.

For a jar with 32,529 entries, 426 dependencies and a 12,000 file static
resource directory, this reduces the number of string comparisons from
73.7M to 222K and the time spent building the index from 197ms to 12ms.
For a jar with no large flat directory (20,529 entries, 426
dependencies) the gain is much smaller: 1.58M comparisons to 162K, and
12.5ms to 9.6ms. The generated layers.idx is byte for byte identical in
both cases.

See gh-51654

Signed-off-by: Junggi Kim <kimjg2477@gmail.com>
2026-09-10 16:30:35 +02:00
Andy Wilkinson 59379ae449 Merge branch '4.1.x'
Closes gh-51652
2026-09-09 15:32:53 +01:00
Andy Wilkinson 007ca201e1 Polish "Add SBOM manifest attributes to repackaged Maven wars"
See gh-51551

Signed-off-by: Andy Wilkinson <andy.wilkinson@broadcom.com>
2026-09-09 14:44:51 +01:00
COBI-98 bfd05e38b5 Add SBOM manifest attributes to repackaged Maven wars
Packager#isCycloneDxBom only recognized CycloneDX SBOMs beneath
META-INF/sbom/. In a war, the CycloneDX Maven plugin's output is
packaged beneath WEB-INF/classes/META-INF/sbom/, so repackaging did
not add the SBOM manifest attributes.

Also check beneath Layout#getClassesLocation(), which findMainMethod
already uses to locate application classes. Continue to support the
root location used by jars.

Signed-off-by: COBI-98 <tkdgus968@naver.com>

See gh-51551
2026-09-09 14:44:33 +01:00
Wan bin yu 0d223cbc77 Filter additional configuration metadata from archives
Signed-off-by: Wan bin yu <3431359639@qq.com>

See gh-51386
2026-09-09 08:30:08 +01:00
Manu Sridharan 25a3f8feb9 Remove unnecessary NullAway suppressions
Signed-off-by: Manu Sridharan <msridhar@gmail.com>

See gh-51591
2026-09-07 08:18:11 +01:00
Andy Wilkinson add52b6ccd Merge branch '3.5.x' into 4.0.x
Closes gh-50439
2026-05-14 15:02:24 +01:00
Stéphane Nicoll 5c9dbd4a4d Merge branch '3.5.x' into 4.0.x
Closes gh-49300
2026-02-23 16:47:20 +01:00
Andy Wilkinson 0ffffee4bf Upgrade to Nullability Plugin 0.0.9
Closes gh-48638
2026-01-08 11:59:51 +00:00
Stéphane Nicoll d1e5fe3248 Merge branch '3.5.x'
Closes gh-48106
2025-11-13 10:31:25 +01:00
Stéphane Nicoll 728cb95a17 Fix formatting 2025-10-23 14:12:50 +02:00
Andy Wilkinson aa95282290 Polish @since tags
Closes gh-47779
2025-10-23 12:48:58 +01:00
Phillip Webb debbec8ee1 Merge branch '3.5.x'
Closes gh-47772
2025-10-22 22:15:43 -07:00
Andy Wilkinson 81aa674adb Remove support for embedded launch scripts
Closes gh-47666
2025-10-20 20:03:14 +01:00
Moritz Halbritter 797f25f884 Add nullability annotations to tests in loader/spring-boot-loader-tools
See gh-47263
2025-10-16 14:07:16 +02:00
Moritz Halbritter e350286196 Improve null-safety of loader/spring-boot-loader-tools
See gh-47263
2025-10-16 14:07:15 +02:00
Andy Wilkinson 44099d3d21 Build with Gradle 9.1.0 2025-10-06 18:30:48 +01:00
Andy Wilkinson 53cda6a6a1 Polish "Remove unused SHA-1 hash from UNPACK markers"
See gh-46520
2025-10-03 15:16:36 +01:00
academey d5717b71ab Remove unused SHA-1 hash from UNPACK markers
In BootZipCopyAction and AbstractJarWriter, SHA-1 hash is calculated for
stored entries requiring unpack and set as entry comment. However, the
hash isn't used anywhere, just the marker prefix 'UNPACK:' is checked.

This commit removes the unnecessary SHA-1 hash calculation which reads
the file completely in memory, potentially three times in extreme cases.
Now the comment is simply set to 'UNPACK:' without any hash, improving
performance.

See gh-46520

Signed-off-by: Hyunjoon Choi <hyunjoon@example.com>
Signed-off-by: academey <academey@gmail.com>
2025-10-03 15:16:36 +01:00
Andy Wilkinson 6490b749db Merge branch '3.5.x'
Closes gh-47310
2025-09-24 14:57:27 +01:00
Phillip Webb bc46bb2a24 Drop spring-boot-loader-classic support
Closes gh-45714
2025-09-23 15:31:51 -07:00
Moritz Halbritter 3a40b0a623 Improve null-safety of loader/spring-boot-loader-tools
See gh-46926
2025-08-26 14:22:54 +02:00
Moritz Halbritter 8d853fae86 Add nullability annotations to loader/spring-boot-loader-tools
See gh-46587
2025-08-11 15:50:49 +02:00
Phillip Webb decc32dde3 Restructure project directories to better fit Gradle
Closes gh-46358
2025-07-10 17:54:08 -07:00