Commit Graph

2946 Commits

Author SHA1 Message Date
Andy Wilkinson 40ce6182a1 Merge branch '3.0.x' into 3.1.x
Closes gh-38167
2023-11-01 15:03:29 +00:00
Andy Wilkinson b7f00c1087 Merge branch '2.7.x' into 3.0.x
Closes gh-38166
2023-11-01 15:02:54 +00:00
Moritz Halbritter 20edbb402f Merge branch '3.1.x' 2023-10-31 10:23:13 +01:00
Moritz Halbritter 607ed86edb Merge branch '3.0.x' into 3.1.x 2023-10-31 10:23:01 +01:00
Moritz Halbritter f3c10ae97b Polish JsonStream 2023-10-31 09:49:01 +01:00
Andy Wilkinson 94e810201e Fix test for incremental build of renamed properties class
Previously, the .class file for the renamed properties class was
on the class path of the compilation in two places:

1. The output directory of the test's previous compilation
2. The output directory of the compilation of src/test/java of
   spring-boot-configuration-processor

The first of these locations is addressed by updating TestProject.
The .class file is now deleted from the project's output location
at the same time as the .java file is deleted from its source
location.

The second of these locations is addressed by configuring the class
path of the compiler to include a copy of the result of compiling
src/test/java of spring-boot-configuration-processor. From this copy
entries can then be deleted as needed without destabilizing other tests.

Closes gh-26271
2023-10-30 15:17:28 +00:00
Moritz Halbritter f66c76e2a8 Merge branch '3.1.x'
Closes gh-38078
2023-10-27 13:47:23 +02:00
Moritz Halbritter 5ca7201fa5 Fix "Integrating with Actuator" code snippet
Closes gh-36114
2023-10-27 13:47:02 +02:00
Moritz Halbritter 35aa28485a Merge branch '3.1.x'
Closes gh-38069
2023-10-27 09:50:57 +02:00
Moritz Halbritter 8bb2228adf Document how to unset maven.compiler.release
Closes gh-37993
2023-10-27 09:50:12 +02:00
Phillip Webb beb49e1933 Add tests for DataBlockInputStream and fix implementation oddities
Fix issues with `DataBlockInputStream` including the fact that remain
bytes were not tracked correctly. Also add some tests and fix a few
other unusual details with the implementation.

Closes gh-38066
2023-10-26 23:00:20 -07:00
Phillip Webb 4af9ed4d1d Fix Tomcat TldScanner issues by returning raw zip data for nested jars
Update JarUrlConnection so that the full raw zip data is returned from
nested jars when no entry name is specified. This update allows
Tomcat's `WarURLConnection` to work with our nested connections since
they can parse the returned raw zip data.

Fixes gh-38047
2023-10-26 23:00:20 -07:00
Phillip Webb bba323ba5f Copy zip data descriptor records when creating virtual zip data
The zip specification states that when 'bit 3' of the general purpose
flags is set then a data descriptor record must be present. Prior to
this commit, our `VirtualZipDataBlock` ignored such records and would
create invalid data.

Although the generated data would work for zip parsers that read the
central directory records, it causes problems with streaming reader
implementations such as `JarInputStream`.

This commit updates the code so that it now copies the data descriptor
records. It support both blocks that have a signature and those that
don't. It also updates the generation logic to correctly deal with
any extra data bytes present after the local file header record.

Fixes gh-38063
2023-10-26 23:00:20 -07:00
Phillip Webb b35c4d6497 Open loader jar URLs by default using `runtimeVersion`
Update `UrlJarFileFactory` so that `runtimeVersion` is used by default
instead of `baseVersion`. Prior to this commit we tried to mirror the
JDK handler on look for a `#runtime` fragment. This unfortunately
doesn't work with the URLs produced by `URLClassPath`.

This commit also fixes a bug in `NestedJarFile` where we didn't return
the correct result from `hasEntry`.

Fixes gh-38050
2023-10-25 21:20:42 -07:00
Andy Wilkinson b167eb3b02 Merge branch '3.1.x' 2023-10-25 14:50:30 +01:00
Andy Wilkinson 4dea11ef96 Merge branch '3.0.x' into 3.1.x 2023-10-25 14:50:21 +01:00
Andy Wilkinson ead0c77a5b Polish
See gh-38030
2023-10-25 14:50:07 +01:00
Andy Wilkinson 0d1a223fee Merge branch '3.1.x'
Closes gh-38032
2023-10-25 14:08:22 +01:00
Andy Wilkinson 649117de35 Merge branch '3.0.x' into 3.1.x
Closes gh-38031
2023-10-25 14:08:10 +01:00
Andy Wilkinson 331bf51332 Merge branch '2.7.x' into 3.0.x
Closes gh-38030
2023-10-25 14:07:57 +01:00
Andy Wilkinson 666f68ea60 Document configuration for building images with Colima
Closes gh-34522
2023-10-25 14:07:43 +01:00
Phillip Webb 4e7c0737d4 Fix PropertiesLauncher classpath detection without 'loader.path' set
Update `PropertiesLauncher` to restore classpath detection logic applied
when no `loader.path` property is set.

Fixes gh-37992
2023-10-24 17:03:18 -07:00
Johnny Lim b5d4983829 Polish
See gh-37984
2023-10-23 11:15:27 +02:00
Phillip Webb e1bd24695d Try `@AssertFileChannelDataBlocksClosed` for Windows fix
This updates commit dad5dc6750 to
see if @AssertFileChannelDataBlocksClosed will take care of
closing files.

See gh-7161
2023-10-20 10:05:43 -07:00
Andy Wilkinson d13d38a141 Trim multiple leading slashes in NestedLocation
See gh-37668
2023-10-20 11:55:35 +01:00
Andy Wilkinson 88bf3dfba2 Close byte channel created by newByteChannelReturnsByteChannel
See gh-7161
2023-10-20 11:22:16 +01:00
Andy Wilkinson dad5dc6750 Try to fix NestedFileSystemProviderTests on Windows
See gh-7161
2023-10-20 10:56:08 +01:00
Andy Wilkinson 4161eb1853 Fix path handling in NestedLocation on Windows
See 4b495ca
See gh-37668
2023-10-20 09:15:54 +01:00
Phillip Webb 3eeb1b2849 Merge branch '3.1.x' 2023-10-19 23:21:42 -07:00
Phillip Webb 7c864804d5 Merge branch '2.7.x' into 3.0.x 2023-10-19 23:21:08 -07:00
Phillip Webb d47f8bf945 Update copyright year of changed files 2023-10-19 23:20:43 -07:00
Phillip Webb d638bbb0ba Merge branch '3.1.x'
Closes gh-37967
2023-10-19 21:25:44 -07:00
Phillip Webb 1d456e09d2 Merge branch '3.0.x' into 3.1.x
Closes gh-37966
2023-10-19 21:12:52 -07:00
Phillip Webb a0b999c8b4 Merge branch '2.7.x' into 3.0.x
Closes gh-37965
2023-10-19 20:55:51 -07:00
Phillip Webb abdad1cabe Constently use assertThatExceptionOf... assertions
Closes gh-37964
2023-10-19 20:17:26 -07:00
Phillip Webb b8365e3118 Fix misconfigured Maven test
See gh-37669
2023-10-18 22:58:45 -07:00
Phillip Webb 3c62defb9d Support java.nio.file Paths and FileSystems with nested jars
Add a `NestedFileSystemProvider` implementation so that the JDK's
`ZipFileSystem` can load content from nested jars and nested
directory entries.

Creating a `ZipFileSystem` may be a relatively expensive operation as
zip structures need to be parsed and in the case of directory entries
a virtual datablock nees to be generated on the fly. As such, we
install the `ZipFileSystem` as late as possible since in a typical
application it may never be needed.

This commit also tweaks Gradle and Maven plugins to ensure that the
service loader file is written to repackaged jars.

Closes gh-7161
2023-10-18 20:46:36 -07:00
Phillip Webb 4b495ca2a9 Change `NestedLocation` to hold a `Path` rather than a `File`
Refactor `NestedLocation` so that it holds a `Path` rather than a
`File`.

See gh-37668
2023-10-18 20:46:35 -07:00
Andy Wilkinson 1559485f56 Fix Gradle plugin test classpath after Kotlin upgrade
See gh-37926
2023-10-18 14:07:49 +01:00
Phillip Webb 33c5e1269a Write signature files to uber jars to for Oracle Java 17 verification
Update Gradle and Maven plugins to write an empty `META-INF/BOOT.SF`
file whenever there is a nested signed jar.

This update allows Oracle Java 17 to correctly verify the nested JARs.
The file is required because `JarVerifier` has code roughly equivalent
to:

	if (!jarManifestNameChecked && SharedSecrets
			.getJavaUtilZipFileAccess().getManifestName(jf, true) == null) {
    	throw new JarException("The JCE Provider " + jarURL.toString() +
    		" is not signed.");
	}

The `SharedSecrets.getJavaUtilZipFileAccess().getManifestName(jf, true)`
call ends up in `ZipFile.getManifestName(onlyIfSignatureRelatedFiles)`
which is a private method that we cannot override in our `NestedJarFile`
subclass. By writing an empty `.SF` file we ensure that the `Manifest`
is always returned because there are always "signature related files".

Fixes gh-28837
2023-10-16 16:19:16 -07:00
Andy Wilkinson d6a9295c26 Allow additional build info properties to have provided values
Closes gh-37889
2023-10-16 18:15:42 +01:00
Andy Wilkinson 084bd3a420 Merge branch '3.1.x' 2023-10-13 21:38:06 +01:00
Andy Wilkinson ccaa54436b Merge branch '3.0.x' into 3.1.x 2023-10-13 21:37:56 +01:00
Andy Wilkinson b1eb08faba Merge branch '2.7.x' into 3.0.x 2023-10-13 21:37:44 +01:00
Andy Wilkinson 3dba0d76d2 Polish
See gh-37878
2023-10-13 21:17:12 +01:00
Andy Wilkinson 2231244d2c Merge branch '3.1.x' 2023-10-13 20:42:15 +01:00
Andy Wilkinson e957c3087c Merge branch '3.0.x' into 3.1.x 2023-10-13 20:36:51 +01:00
Andy Wilkinson c25e532aeb Merge branch '2.7.x' into 3.0.x 2023-10-13 20:36:32 +01:00
Andy Wilkinson dbc06faed8 Polish
See gh-37878
2023-10-13 20:36:16 +01:00
Andy Wilkinson 60f05eaa94 Merge branch '3.1.x'
Closes gh-37882
2023-10-13 16:01:47 +01:00
Andy Wilkinson 5af13d191f Merge branch '3.0.x' into 3.1.x
Closes gh-37881
2023-10-13 16:01:32 +01:00
Andy Wilkinson ae2693b7f1 Merge branch '2.7.x' into 3.0.x
Closes gh-37880
2023-10-13 16:01:14 +01:00
Andy Wilkinson 42ee6b9e74 Use new permissions API with Gradle 8.3+
Closes gh-37878
2023-10-13 16:00:54 +01:00
Johnny Lim 446677375e Polish gh-35082
See gh-37831
2023-10-12 14:17:02 +02:00
Andy Wilkinson bdaf7a7603 Merge branch '3.1.x'
Closes gh-37830
2023-10-11 15:06:09 +01:00
Andy Wilkinson 411586347c Merge branch '3.0.x' into 3.1.x
Closes gh-37829
2023-10-11 15:04:21 +01:00
Andy Wilkinson 781ac2ece2 Merge branch '2.7.x' into 3.0.x
Closes gh-37828
2023-10-11 15:02:36 +01:00
Andy Wilkinson 5a75fae23b Polish "Polish"
See gh-37745
2023-10-11 14:58:04 +01:00
Johnny Lim 303015ea2d Polish
See gh-37745
2023-10-11 14:57:38 +01:00
Andy Wilkinson d0486ef43f Merge branch '3.1.x'
Closes gh-37827
2023-10-11 14:47:35 +01:00
Andy Wilkinson 40461488db Merge branch '3.0.x' into 3.1.x
Closes gh-37826
2023-10-11 14:47:23 +01:00
Andy Wilkinson a80f8ea5e6 Configure Java toolchain on AOT-processing tasks
Closes gh-37717
2023-10-11 14:31:44 +01:00
Andy Wilkinson b9a0159b97 Merge branch '3.1.x'
Closes gh-37825
2023-10-11 13:54:39 +01:00
Andy Wilkinson ac1f7ccc33 Merge branch '3.0.x' into 3.1.x
Closes gh-37824
2023-10-11 13:54:25 +01:00
Andy Wilkinson 5a6cd77c56 Merge branch '2.7.x' into 3.0.x
Closes gh-37823
2023-10-11 13:54:11 +01:00
Andy Wilkinson 5a1abb76f7 Test the Gradle plugin against Gradle 8.4
Closes gh-37811
2023-10-11 13:52:03 +01:00
Phillip Webb 9e4f160c17 Attempt to fix NestedJarFile file lock issues on Windows
Update `DefaultCleanerTracking` and `@AssertFileChannelDataBlocksClosed`
to capture and store the source object if it is a `Cleanable` so that
it can be released later.

Although the real cleaner cannot keep a reference to `obj`, it is safe
for us to do so in tests since we are in control of the object lifecycle
and we don't need it to be garbage collected.

This commit also updates the `UrlJarFile` to call the cleaner so that
it can be tracked.

See gh-37668
2023-10-06 23:44:55 -07:00
Phillip Webb 5da31aca46 Attempt to fix NestedJarFile file lock issues on Windows
Update `NestedJarFile.close()` to call `super.close()` so that the outer
jar file is closed and files can hopefully be deleted on Windows.

See gh-37668
2023-10-06 21:47:55 -07:00
Phillip Webb 1f5472387d Fix formatting 2023-10-03 20:41:48 -07:00
Phillip Webb 42f50fa292 Attempt to fix CI failures
Attempt to fix CI failures caused by timezone differences and different
JDK versions.

See gh-37668
2023-10-03 20:29:33 -07:00
Phillip Webb 7ad4a9817d Rewrite nested jar support code and remove Java 8 support
Rewrite nested jar code to better align with the implementations
provided in Java 17. This update makes two fundamental changes to
the previous implementation:

- Resource cleanup is now handled using the `java.lang.ref.Cleaner`

- Jar URLs now use the form `jar:nested:/my.jar/!nested.jar!/entry`

Unlike the previous `jar🫙/my,jar!/nested.jar!/entry` URL format,
the new format is compatible with Java's default Jar URL handler.
Specifically, it now only uses a single `jar:` prefix and it no longer
includes multiple `!/` separators.

In addition to the changes above, many of the ancillary classes have
also been refactored and updated to create cleaner APIs.

Closes gh-37668
2023-10-03 17:27:57 -07:00
Phillip Webb 75ddb9fa47 Fix test failure caused by PropertiesLoader class reference
See gh-37667
2023-10-03 17:27:39 -07:00
Phillip Webb 55b5610dd9 Add Maven and Gradle option for the loader implementation to use
Add properties to the Maven and Gradle plugins so that users can
switch between the two loader modules.

See gh-37669
2023-10-03 15:40:42 -07:00
Phillip Webb a89057b7c7 Reintroduce spring-boot-loader modules
Restore the `spring-boot-loader` with the previous loader code so
that we can develop it further.

See gh-37669
2023-10-03 15:40:25 -07:00
Phillip Webb aeb6537f57 Rename spring-boot-loader to spring-boot-loader-classic
Rename the `spring-boot-loader` module to `spring-boot-loader-classic`
so that we can introduce an alternative loader implementation.

See gh-37669
2023-10-03 15:40:04 -07:00
Phillip Webb c22548982a Relocate launcher classes
Create alternative launcher classes under the package
`org.springframework.boot.loader.launch` and use them in favor
of the previous location.

This update is designed to improve compatibility with future
changes in the loader.

Closes gh-37667
2023-10-03 14:53:04 -07:00
Scott Frederick f947bad3f7 Merge branch '3.1.x'
Closes gh-37666
2023-10-03 13:18:32 -05:00
Ivo Smid f2a4336ea1 Increase the socket timeout for remote connections to Docker daemon
The default socket timeout with HttpClient 5 is not long enough
in some cases where Docker images are built that require the
GraalVM native image compiler to run in a buildpack. This commit
increases the timeout to 30 minutes.

Fixes gh-37665

Co-authored-by: Scott Frederick <sfrederick@vmware.com>"
2023-10-03 11:52:48 -05:00
Andy Wilkinson 7d40a45b50 Merge branch '3.1.x'
Closes gh-37662
2023-10-03 11:21:29 +01:00
Andy Wilkinson a4100e12ff Merge branch '3.0.x' into 3.1.x
Closes gh-37661
2023-10-03 11:05:51 +01:00
Andy Wilkinson 931584f8af Merge branch '2.7.x' into 3.0.x
Closes gh-37659
2023-10-03 10:28:51 +01:00
Phillip Webb 3d6859e80f Use the term "uber jar" in reference documentation and javadoc
Update reference documentation and javadoc to use the term "uber jar"
rather than "fat jar".

Closes gh-37653
2023-10-02 23:01:34 -07:00
Scott Frederick 619a0f3b35 Merge branch '3.1.x'
Closes gh-37624
2023-09-28 16:32:45 -05:00
JinseongHwang 0b703f9007 Use consistent capitalization in MySQL and MariaDB test names
See gh-37497
2023-09-28 16:28:32 -05:00
Andy Wilkinson bebca55a8f Add testAndDevelopmentOnly configuration
Closes gh-35436
2023-09-28 13:24:34 +01:00
Phillip Webb 052757c2d8 Polish 2023-09-27 20:58:09 -07:00
Scott Frederick 3cf08e1351 Clarify default security options for image building
See gh-37479
2023-09-27 11:05:40 -05:00
Scott Frederick 9811cc030f Fix LifecycleTests for security options on Windows
Fixes gh-37598
2023-09-27 10:09:44 -05:00
Scott Frederick 7c23c0b3c2 Merge branch '3.1.x' 2023-09-26 18:51:03 -05:00
Scott Frederick 5ae4ba83a7 Merge branch '3.0.x' into 3.1.x 2023-09-26 18:19:48 -05:00
Scott Frederick 7e29a3c70b Use latest available Gradle version for Paketo system tests
This ensures that the tests will run with the latest Java versions.

See gh-37507
2023-09-26 18:19:25 -05:00
Scott Frederick d37e9424a2 Merge branch '3.1.x'
Closes gh-37589
2023-09-26 14:07:16 -05:00
Scott Frederick 4f8684fd69 Merge branch '3.0.x' into 3.1.x
Closes gh-37588
2023-09-26 14:07:05 -05:00
Scott Frederick a03e3320a6 Merge branch '2.7.x' into 3.0.x
Closes gh-37587
2023-09-26 14:06:50 -05:00
Scott Frederick aeeb5cf1f8 Apply Gradle fileMode and dirMode consistently in jar and war archives
Fixes gh-37496
2023-09-26 13:49:19 -05:00
Scott Frederick c45ad6ce83 Use actual Java version in build image integration tests
See gh-37453
2023-09-22 13:38:37 -05:00
Scott Frederick e80f743648 Merge branch '3.1.x'
Closes gh-37551
2023-09-22 11:37:00 -05:00
Scott Frederick 3803bd9af9 Merge branch '3.0.x' into 3.1.x
Closes gh-37550
2023-09-22 11:32:28 -05:00
Scott Frederick 7322c078c4 Merge branch '2.7.x' into 3.0.x
Closes gh-37549
2023-09-22 11:32:07 -05:00
Scott Frederick 98bfaf0412 Remove compatibility blocks from Gradle plugin integration tests
Closes gh-37453
2023-09-22 11:28:12 -05:00