Previously, CommandLineInvoker would use the first -bin.zip file found
in build/distributions. If this directory contained multiple zips from
building different versions of Spring Boot, this could result in the
tests being run against the wrong version of the CLI.
This commit updates CommandLineInvoker look for a specific zip in
build/distributions, using the version from gradle.properties to
identify it.
Closes gh-25179
Previously, when building a layered jar, the Gradle plugin only
considered a configuration's direct dependencies when identifying
project dependencies. This resulted in transitive project dependencies
being missed when deciding which dependencies belong in the
application layer.
This commit updates ResolvedDependencies to consider all projects
from the root project when collecting the IDs of local projects. This
ensures that any project dependency, no matter where it appears in the
dependency graph, is successfully identified.
Fixes gh-25163
A change [1] in Spring Framework 5.3 means that getUrl() on a
RequestEntity will throw an UnsupportedOperationException if the
entity was created using a template.
This commit updates TestRestTemplate to check for instances of
UriTemplateRequestEntity and to resolve the URI using the
entity's UriTemplateHandler instead of calling getUrl() directly.
Fixes gh-25097
[1] a0f4d81db7
Update `build.gradle` files to ensure that `junit-platform-launcher` is
a `testRuntimeOnly` dependency. This ensures that tests can be run from
Eclipse.
Closes gh-25074
Update `CharSequenceToObjectConverter` so that conversion that would
apply using an `ObjectTo...` converter now favors `toString()` based
conversion.
Prior to this commit, when converting a `CharSequence` to a `Collection`
the `ObjectToCollectionConveter` would be picked instead of the
`StringToCollectionConverter`. This resulted in a `Collection`
containing a single `String` value, rather than the expected list
of values split around ",".
Fixes gh-25057
Add a new `ConfigData.Option` that allows profile properties to be
ignored. This update will allow Spring Cloud Config Server to provide
`ConfigData` that only has profile properties processed on the
server-side.
Closes gh-24890
Update `LoggingSystemProperties` so that system environment properties
are also applied to the `LoggerContext`. This is required when multiple
applications are deployed to the same Servlet container. In such setups
there's only a single JVM and the System Environment can be changed
when multiple applications start at the same time.
Fixes gh-24835
This commit improves the "Application lifefycle and Probes states"
section and underlines the difference between `AvailabilityState` and
the availability of Probes over HTTP.
Closes gh-24843
This commit updates DataSourceUnwrapper to take a separate interface
type argument if the target datasource has to be unwrapped, given that
the target type is usually not an interface.
Closes gh-24697
Previously, the restart initializer that enables restart when
-Dspring.devtools.restart.enabled=true is set had no effect when the
ClassLoader's name did not contain AppClassLoader. This commit updates
RestartApplicationListener to use the correct RestartInitializer when
the system property has forcibly enabled restart.
When restart is enabled a SilentExitException is thrown and it should be
caught and handled by the SilentExitExceptionHandler. When the
application is invoked via one of the loader's LauncherClasses
reflection is used and this exception becomes wrapped in an
InvocationTargetEception. Previously, this wrapping prevented
SilentExitExceptionHandler from handling the exception. This commit
updates the handler to look for an InvocationTargetException with a
SilentExitException target in addition to continuing to look for a
SilentExitException directly.
Fixes gh-24797
Previously, when an authenticated Docker builder registry was
configured in the Maven or Gradle plugin and the builder and run
images specified different registries, the authentication credentials
would be sent to both registries. This could cause confusion if both
registries don't recognize the same credentials. This commit enforces
that both images are in the same registry when authentication
is configured.
Fixes gh-24552
Throw an `InvalidConfigDataPropertyException` if bad properties are
detected in profile specific files. The following properties will now
trigger an exception if used in a profile specific file:
`spring.profiles.include`
`spring.profiles.active`
`spring.profiles.default`
`spring.config.activate.on-profile`
`spring.profiles`
Prior to this commit, profile based properties in a profile specific
file would be silently ignored, making them hard to find.
Fixes gh-24733
Update `DataSourceTransactionManagerAutoConfiguration` to respect
the `spring.dao.exceptiontranslation` setting. If `exceptiontranslation`
is `false` then we create a classic `DataSourceTransactionManager`
rather than a `JdbcTransactionManager`.
Fixes gh-24321
Previously, unlike the application plugin's run task, our bootRun task
ignored the project's Java toolchain. This meant that the application
was run on a JVM with the same Java version as the one being used by
Gradle itself. This could result in a failure if the application
required a more modern JVM.
This commit updates the plugin to configure the bootRun task's
JavaLauncher convention to be one derived from the project's Java
toolchain. Toolchain support was introduced in Gradle 6.7 so this is
only done when using Gradle 6.7 and later.
Fixes gh-24517
Previously, bootRun assumed that the Java version of the JVM that would
run the application would be the same as the Java version of the JVM
that is running the build. This assumption does not hold true when
Gradle's toolchain support is used to configure tasks that fork a new
JVM to use a version other than that being used by Gradle itself.
This commit updates the BootRun task to query the JavaLauncher property
when determining the version of Java on which the application will be
run. Toolchain support and the JavaLauncher property are new in Gradle
6.7. To support earlier versions of Gradle, NoSuchMethodError is caught
we continue as if no JavaLauncher has been configured and use the local
JVM's Java version.
Fixes gh-24512
This commit removes the `layout` and `layoutFactory` parameters
from the `build-image` goal in the Maven plugin while retaining
them for the `repackage` goal. The `build-image` goal currently
only supports jar archives, so allowing other layout types to be
configured for the goal could cause confusion.
Fixes gh-24105
Previously, an error would occur when a user contributed a
`ThemeResolver` or `FlashMapManager` bean because those beans would
would not properly override the default beans provided by Spring
Framework. This commit adds conditional auto-configuration of these
bean types, preferring user-provided beans and falling back to
Framework-provided defaults.
Fixes gh-24207
Update `FailureAnalyzers` to log errors at `trace` rather than `debug`.
This should reduce noise when an analyzer unexpectedly fails and the
user is running with `--debug`.
Fixes gh-24630