Commit Graph

590 Commits

Author SHA1 Message Date
Tobias Lippert cb26c31dd6 Replace explicit type with diamond operator
See gh-39259
2024-01-23 10:18:49 -08:00
Phillip Webb ea87787279 Merge branch '3.1.x'
Closes gh-38741
2023-12-11 20:37:45 -08:00
Phillip Webb 39bc7c8582 Support getPermissions() call on Gradle 8.6-milestone-1
The `getPermissions` method is now part of the private
`ParentDirectoryStub` class so we now need to call
`setAccessible(true)`.

Fixes gh-38718
2023-12-11 20:35:06 -08:00
Scott Frederick d433deb737 Merge branch '3.0.x' into 3.1.x
Closes gh-38485
2023-11-21 17:30:54 -06:00
Scott Frederick dabcebf8a3 Merge branch '2.7.x' into 3.0.x
Closes gh-38484
2023-11-21 17:30:07 -06:00
Andy Wilkinson 08a4a836aa Merge branch '3.1.x'
Closes gh-38233
2023-11-06 14:26:09 +00:00
Andy Wilkinson b01235e68d Copy attributes from runtimeClasspath to productionRuntimeClasspath
Fixes gh-38209
2023-11-06 11:50:27 +00:00
Phillip Webb 77218a644e Merge branch '3.1.x' 2023-11-02 14:16:37 -07:00
Phillip Webb afa4d274c2 Merge branch '3.0.x' into 3.1.x 2023-11-02 14:14:19 -07:00
Phillip Webb d47f8bf945 Update copyright year of changed files 2023-10-19 23:20:43 -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 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
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
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 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
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 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
Andy Wilkinson 89a86e91f5 Avoid deprecation warning with Gradle 8.4-rc-1
Closes gh-37493
2023-09-22 15:31:36 +01:00
Scott Frederick 7de770f6a1 Add support for security options in CNB builder container config
Closes gh-37479
2023-09-20 13:43:36 -05:00
Scott Frederick 4433fcd1f2 Add support for build workspace option when building images
Closes gh-37478
2023-09-20 13:43:35 -05:00
Andy Wilkinson 44bc47d96d Merge branch '3.1.x'
Closes gh-37381
2023-09-14 11:03:25 +01:00
Andy Wilkinson dfb95329fd Merge branch '3.0.x' into 3.1.x
Closes gh-37380
2023-09-14 11:03:08 +01:00
Andy Wilkinson a795065555 Polish "Lazily query attributes when copying from base configuration"
See gh-37343
2023-09-14 10:32:05 +01:00
Fouad Almalki 7edc9ebc28 Lazily query attributes when copying from base configuration
See gh-37343
2023-09-14 10:30:11 +01:00
Andy Wilkinson f45a32d911 Merge branch '3.1.x'
Closes gh-37175
2023-09-01 14:18:23 +01:00
Andy Wilkinson a84ee2fb12 Merge branch '3.0.x' into 3.1.x
Closes gh-37174
2023-09-01 14:17:59 +01:00
Andy Wilkinson 3ab1dfb9dc Merge branch '2.7.x' into 3.0.x
Closes gh-37173
2023-09-01 14:17:40 +01:00
Andy Wilkinson a77863245d Polish "Use project.getLayout().getBuildDirectory() instead of getBuildDir()"
See gh-37167
2023-09-01 14:15:33 +01:00
Yanming Zhou a8706962d4 Use project.getLayout().getBuildDirectory() instead of getBuildDir()
See gh-37167
2023-09-01 14:08:16 +01:00
Scott Frederick c17ecf0f0b Add support for caching to bind mounts when building images
When building an image using the Maven `spring-boot:build-image` goal or
the Gradle `bootBuildImage` task, the build and launch caches can be
configured to use a bind mount as an alternative to using a named
volume.

Closes gh-28387
2023-08-21 15:04:39 -05:00
Scott Frederick eb45aab712 Upgrade default CNB builders to Paketo Jammy
Closes gh-36689
2023-08-14 13:29:42 -05:00
Moritz Halbritter e4484c3db5 Use constants in SpringBootAotPlugin 2023-08-08 13:12:48 +02:00
Moritz Halbritter ed9169501e Polish 2023-08-08 13:12:47 +02:00
Andy Wilkinson b1d26fe961 Revert "Upgrade default CNB builders to Paketo Jammy"
This reverts commit 6506208d29. The
upgrade to the Jammy builder was causing
failsWhenBuildImageIsInvokedOnMultiModuleProjectWithBuildImageGoal to
hang on CI.

See gh-36689
2023-08-07 12:10:27 +01:00
Scott Frederick 6506208d29 Upgrade default CNB builders to Paketo Jammy
Closes gh-36689
2023-08-02 19:06:16 -05:00
Andy Wilkinson 21ce7a08fc Polish "Polish"
See gh-36620
2023-07-28 11:40:34 +01:00
Johnny Lim 5a205dbfd1 Polish
See gh-36620
2023-07-28 11:35:33 +01:00
Scott Frederick 4393a2244c Use Docker CLI context to determine daemon host address for image building
Configuration files managed by the Docker CLI are now used to determine
the host address of the Docker daemon used when building images using
buildpacks when a host address is not configured with environment
variables or build tool plugin configuration.

Closes gh-36445
2023-07-18 13:21:01 -06:00
Andy Wilkinson c9f8d92656 Merge branch '3.0.x' into 3.1.x
Closes gh-36237
2023-07-05 09:47:43 +01:00
Johnny Lim 0fa58c04e7 Use Stream.toList()
See gh-36167
2023-07-05 09:38:19 +01:00
Andy Wilkinson 45ce18e1c7 Polish "Test Gradle plugin against Gradle 8.2-rc-1"
See gh-35708
2023-06-02 15:35:34 +01:00
Andy Wilkinson d6192a0fa1 Merge branch '3.0.x'
Closes gh-35708
2023-06-02 15:18:13 +01:00
Andy Wilkinson 5a793a6d49 Merge branch '2.7.x' into 3.0.x
Closes gh-35707
2023-06-02 15:17:35 +01:00
Andy Wilkinson 5623fe3b94 Test Gradle plugin against Gradle 8.2-rc-1
Closes gh-35699
2023-06-02 13:23:36 +01:00
Phillip Webb ae90add7c7 Polish 2023-05-16 14:04:48 -07:00
Andy Wilkinson 37cc6b6a70 Merge branch '3.0.x'
Closes gh-35444
2023-05-16 09:27:30 +01:00
Andy Wilkinson c39a37cd23 Exclude developmentOnly dependences from AOT processing classpaths
Fixes gh-35433
2023-05-16 09:26:20 +01:00
Phillip Webb e3ed87d165 Merge branch '3.0.x' 2023-05-12 13:21:52 -07:00
Phillip Webb 92e420a098 Merge branch '2.7.x' into 3.0.x 2023-05-12 13:14:12 -07:00
Johnny Lim ff9fd1abeb Polish
See gh-35185
2023-05-10 08:31:36 +02:00
Andy Wilkinson 07a11045d9 Merge branch '3.0.x'
Closes gh-35328
2023-05-05 17:35:50 +01:00
Andy Wilkinson fd864c35aa Improve mapping of resolved artifacts to dependency coordinates
Closes gh-31216
2023-05-05 17:32:59 +01:00
Andy Wilkinson 19d7973776 Add bootTestRun to run app using test source set output and classpath
Closes gh-35248
2023-05-04 15:27:10 +01:00
Scott Frederick 23ae91b008 Add native image manifest entry
A manifest entry `Spring-Boot-Native-Processed: true` is added to the
jar manifest by the Maven or Gradle plugin when the jar has been built
for use in a native image. With the Gradle plugin, this is done in
reaction to the GraalVM Native Image Plugin being applied to the
project. With the Maven plugin, this is done when the `native` profile
is applied to the build.
2023-05-02 15:11:49 -05:00
Stephane Nicoll 16563a6a0a Upgrade to Native Build Tools Plugin 0.9.21
Closes gh-35055
2023-04-18 13:45:53 +02:00
Andy Wilkinson d6bbbb8bac Merge branch '3.0.x'
Closes gh-35036
2023-04-17 17:49:55 +01:00
Andy Wilkinson 284e4d6f6d Merge branch '2.7.x' into 3.0.x
Closes gh-35035
2023-04-17 17:46:33 +01:00
Andy Wilkinson 751fc9fe54 Fix includeProjectDependencies with Kotlin DSL 2023-04-17 17:35:15 +01:00
Andy Wilkinson d5756db54c Stop using Native Build Tools "requiredVersion" configuration option
Closes gh-34840
2023-04-14 11:55:20 +01:00
Scott Frederick 56bc6d2fa0 Allow image application directory to be configurable
An `applicationDirectory` option on the Maven
`spring-boot:build-image` goal and the Gradle `bootBuildImage` task
can be configured to set the location that will be used to upload
application contents to the builder image, and will contain the
application contents in the generated image.

Closes gh-34786
2023-04-07 14:00:00 -05:00
Scott Frederick 5817c8441d Allow image Created date to be configurable
A `createdDate` option on the Maven `spring-boot:build-image` goal
and the Gradle `bootBuildImage` task can be used to set the `Created`
metadata field on a generated OCI image to a specified date or to
the current date.

Closes gh-28798
2023-04-06 15:08:34 -05:00
Phillip Webb 956b9e06c9 Merge branch '2.7.x' into 3.0.x
Closes gh-34452
2023-03-02 12:08:52 -08:00
Phillip Webb 69d34c96bf Apply consistent timestamps to files added to a fat archive
Update logic in `BootZipCopyAction` to align with the recent changes
made in the Maven plugin (commit 998d59b7). Timestamps are now
specified in UTC and offset against the default timezone before being
written.

Removing the offset from our UTC time before calling `entry.setTime()`
ensures that we get consistent bytes in the zip file when the output
stream reapplies the offset during write.

Closes gh-21005
2023-03-02 12:06:42 -08:00
Phillip Webb c4de86c244 Merge branch '2.7.x' into 3.0.x 2023-02-21 23:17:57 -08:00
Phillip Webb df5898a146 Reformat code following spring-javaformat upgrade 2023-02-21 22:53:27 -08:00
Johnny Lim d368115128 Fix name for Implementation-Title in Spring Boot Gradle plugin
See gh-34177
2023-02-14 19:47:43 +00:00
Andy Wilkinson 9378fc47a7 Set implementation name and version in Gradle-built archives
Closes gh-34059
2023-02-08 10:59:55 +00:00
Krzysztof Krason d3efd7e091 Use try with close
See gh-33987
2023-01-26 20:36:38 -08:00
Moritz Halbritter c6536c54d8 Write native-image argfile only if there are excludes
Refactors duplicate logic in BootZipCopyAction and Packager into
separate classes.

Closes gh-33363

Co-authored-by: Phillip Webb <pwebb@vmware.com>
2022-11-30 14:29:35 +01:00
Andy Wilkinson fe8644cc59 Fail more elegantly when GraalVM version is too old
Closes gh-32924
2022-11-04 13:05:22 +00:00
Andy Wilkinson 2d5a3eac51 Include AOT-generated classes in native test binary
Closes gh-32940
2022-11-04 11:53:33 +00:00
Andy Wilkinson a3870f8da7 Merge branch '2.6.x' into 2.7.x
Closes gh-32987
2022-11-03 10:23:30 +00:00
Andy Wilkinson beb62be843 Test Boot's Gradle plugin against Gradle 7.6-rc-1
Closes gh-32933
2022-11-03 10:22:14 +00:00
Andy Wilkinson 519250cacf Polish Gradle tasks for AOT processing
Closes gh-32946
2022-11-01 16:42:26 +00:00
Andy Wilkinson b192c29edb Use AOT's outputs to configure source set's inputs
Closes gh-32919
2022-11-01 10:33:17 +00:00
Andy Wilkinson 0103e24bbb Stop configuring AOT-generated classes as output of AOT source set
Closes gh-32940
2022-11-01 10:32:37 +00:00
Andy Wilkinson 2bb9b2640e Separate classpath of AOT tasks from source sets they populate
Closes gh-32930
2022-11-01 10:06:33 +00:00
Johnny Lim 5067aab552 Polish
See gh-32840
2022-10-27 16:33:14 +02:00
Phillip Webb a59b6cb1f3 Polish 2022-10-25 21:56:53 -07:00
Phillip Webb 4be3218cb6 Merge branch '2.7.x' 2022-10-25 15:48:26 -07:00