Commit Graph

2361 Commits

Author SHA1 Message Date
Andy Wilkinson 17953eeb33 Merge branch '2.7.x'
Closes gh-32544
2022-09-29 11:41:15 +01:00
Andy Wilkinson 3ef633b096 Merge branch '2.6.x' into 2.7.x
Closes gh-32543
2022-09-29 11:39:42 +01:00
Andy Wilkinson 84a25c7dcf Configure Log4j2 classpath overrides consistently
Closes gh-32537
2022-09-29 11:25:21 +01:00
dreis2211 f0b4a65546 Avoid usage of StringBuffer where possible
See gh-32519
2022-09-29 09:29:10 +02:00
Andy Wilkinson 0bfa9cd704 Upgrade to Logback 1.4 and SLF4J 2.0
Closes gh-12649
2022-09-28 21:14:08 +01:00
Andy Wilkinson 0f44e69995 Merge branch '2.7.x'
Closes gh-32500
2022-09-26 13:15:39 +01:00
Andy Wilkinson 5124ae94ae Merge branch '2.6.x' into 2.7.x
Closes gh-32499
2022-09-26 13:15:11 +01:00
Andy Wilkinson cfac7f55a4 Correct annotations on BootBuildImage's file-based inputs
Closes gh-32495
2022-09-26 13:13:16 +01:00
Andy Wilkinson f67db3d9ad Move spring-boot-cli into spring-boot-tools
Closes gh-32492
2022-09-23 16:44:57 +01:00
Andy Wilkinson 4a05230d5d Move spring-boot-properties-migrator into spring-boot-tools
Closes gh-32491
2022-09-23 16:18:30 +01:00
Madhura Bhave afce559050 Remove unused dependency from Maven integration test 2022-09-22 14:07:26 -07:00
Andy Wilkinson 7c7c34cda1 Fix classpath roots of AOT test processing
This was regressed in 6175c4210d so that
each class on the classpath was passed in as a "root". This commit
corrects this so that only the roots are passed to the AOT test
processor.

See gh-32424
2022-09-22 12:30:43 +01:00
Scott Frederick f9c341c75a Revert "Generate the AutoConfiguration.imports file from annotations"
This reverts commit da4de7d67d.
2022-09-21 14:50:15 -05:00
Scott Frederick d62d7ca75d Revert "Generate ManagementContextConfiguration.imports file from annotations"
This reverts commit 6b3b0dd3a6.
2022-09-21 14:50:15 -05:00
Scott Frederick 1f53eb7df9 Revert "Sort the contents of generated imports files"
This reverts commit 95e62b7ff8.
2022-09-21 14:50:15 -05:00
Scott Frederick 910e9c9fcc Revert "Fix windows build"
This reverts commit 9fe24fe692.
2022-09-21 14:50:15 -05:00
Andy Wilkinson 4a80b36160 Configure native image classpath outside of task realisation
Closes gh-32465
2022-09-21 18:14:46 +01:00
Andy Wilkinson 6175c4210d Fix skipping of processAot when there is no main source
See gh-32424
2022-09-21 14:57:54 +01:00
Andy Wilkinson fa81e8ca79 Skip processAot and processTestAot if there is no main or test code
Closes gh-32424
2022-09-20 17:15:19 +01:00
Andy Wilkinson e8aa5680d6 Support file-based reachability metadata repositories
See gh-32408
2022-09-20 14:06:18 +01:00
Andy Wilkinson 8323f24ccc Make classes generated by AOT test processing available to nativeTest
Closes gh-32428
2022-09-20 11:29:18 +01:00
Scott Frederick 1ed4d89466 Copy native reachability metadata to jar file in Gradle plugin
When the Spring Boot Gradle plugin builds a fat jar and the Native
Build Tools Gradle plugin is applied to the build, any configuration
files from the GraalVM reachability metadata repository that match
project dependencies are copied to a `META-INF/native-image`
directory in the fat jar.

Closes gh-32408
2022-09-16 12:26:24 -05:00
Andy Wilkinson 2b503ee334 Add AOT-generated classes as a dependency
Previously, the AOT-generated classes were added directly to the
compile classpath of the AOT compilation task. This didn't work
perfectly in IntelliJ IDEA, leaving the generated classes in the
runtime scope and causing compilation problems where the
AOT-generated source tried to reference those classes.

This commit updates the plugin to add the AOT-generated classes as
a dependency to the AOT source set's implementation configuration.
This makes the classes available during compilation by the source
set's Java compilation task while also makeing IntelliJ IDEA aware
of their presence on the compile classpath.

Closes gh-32395
2022-09-15 14:02:54 +01:00
Phillip Webb 20b91c5ae2 Include 'classesDirectory' in ProcessTestAotMojo classpath
Update `ProcessTestAotMojo` so that the classesDirectory and
the testClassesDirectory are on the classpath when compiling
code.

See gh-32191
2022-09-14 13:50:27 -07:00
Stephane Nicoll 88f2b33cc1 Add AOT-generated classes to classpath of the compiler
See gh-32304
2022-09-13 14:58:16 +02:00
Andy Wilkinson 867c49337a Add AOT-generated classes to classpath of AOT JavaCompile tasks
See gh-32304
2022-09-13 13:03:24 +01:00
Stephane Nicoll 9fe24fe692 Fix windows build
This commit makes sure that files that are generated in a temporary
directory are closed once the related test completes.
2022-09-10 16:24:29 +02:00
Andy Wilkinson aafceb3868 Merge branch '2.7.x'
Closes gh-32285
2022-09-09 16:47:06 +01:00
Andy Wilkinson f17df7bf30 Merge branch '2.6.x' into 2.7.x
Closes gh-32284
2022-09-09 16:46:43 +01:00
Andy Wilkinson 23c2f73b3f Update tests to allow them to run on Java 19
Closes gh-32280
2022-09-09 16:46:14 +01:00
Andy Wilkinson 144fdaa703 Merge branch '2.6.x' into 2.7.x
Closes gh-32283
2022-09-09 15:14:40 +01:00
Andy Wilkinson 78f4242e46 Build with Gradle 7.5 while still supporting Gradle 6.8+
Closes gh-32281
2022-09-09 15:13:43 +01:00
Phillip Webb 46be4a3f30 Merge branch '2.7.x' 2022-09-08 19:38:18 -07:00
Phillip Webb e88a682220 Merge branch '2.6.x' into 2.7.x 2022-09-08 19:37:52 -07:00
Phillip Webb 85697ac482 Update copyright year of changed files 2022-09-08 19:36:59 -07:00
Stephane Nicoll 5e24b5a110 Stop using RuntimeHintsUtils#registerAnnotation 2022-09-06 15:44:15 +02:00
Andy Wilkinson 3dfe28c9f1 Ensure that a test engine is available to AOT test processing
See gh-32192
2022-09-05 09:41:28 +01:00
Andy Wilkinson cf84ae7ad8 Exclude non-existent test classes dirs from AOT test processing
See gh-32192
2022-09-05 09:41:21 +01:00
Scott Frederick 95e62b7ff8 Sort the contents of generated imports files
The list of class names generated by annotation processors should be
sorted before being written to `AutoConfiguration.imports` and
`ManagementContextConfiguration.imports` files to make the build more
deterministic.

See gh-31228
2022-09-02 17:26:15 -05:00
Scott Frederick 6b3b0dd3a6 Generate ManagementContextConfiguration.imports file from annotations
This commit adds the
`ManagementContextConfigurationImportsAnnotationProcessor` to
the `spring-boot-autoconfigure-processor` annotation processor
module.

Closes gh-32222
2022-09-02 16:27:59 -05:00
Scott Frederick da4de7d67d Generate the AutoConfiguration.imports file from annotations
This commit adds the `AutoConfigurationImportsAnnotationProcessor` to
the `spring-boot-autoconfigure-processor` annotation processor
module. When added to a project build, the annotation processor will
generate the
`org.springframework.boot.autoconfigure.AutoConfiguration.imports`
file automatically from `@AutoConfiguration`-annotated classes. It
also applies the annotation processor to the Spring Boot build.

Closes gh-31228
2022-09-02 15:10:22 -05:00
Andy Wilkinson fc979397be Polish SpringBootAotPlugin 2022-09-02 16:37:15 +01:00
Andy Wilkinson fd28f6d1d6 Add Gradle plugin support for processing test contexts ahead-of-time
Closes gh-32192
2022-09-02 15:54:46 +01:00
Andy Wilkinson 746ed84120 Polish ProcessTestAotMojo 2022-09-02 12:06:54 +01:00
Phillip Webb 09bd531fe5 Add Maven plugin support for processing test contexts Ahead-of-time
Refactor and update the Spring Boot Maven Plugin so that it can
be used to perform AOT processing of test classes.

Closes gh-32191
2022-08-30 20:41:30 -07:00
Phillip Webb c0b3d36205 Rename 'generateAotSources' task to processAot'
See gh-31918
2022-08-25 15:10:48 -07:00
Phillip Webb 2f6354f633 Rename 'aot-generate' goal to process-aot'
See gh-31918
2022-08-25 15:02:28 -07:00
Scott Frederick c0cbaa1460 Merge branch '2.7.x' 2022-08-24 13:18:22 -05:00
Scott Frederick 257e236b06 Fix image-building unit tests on Windows
See gh-32000
2022-08-24 13:14:39 -05:00
Stephane Nicoll c67010ddd1 Make test more robust 2022-08-23 14:45:52 +02:00
Scott Frederick 2cdaab59f6 Merge branch '2.7.x'
Closes gh-32122
2022-08-19 13:57:26 -05:00
Scott Frederick c16094e04b Disable SELinux label security policy when building images
When using the Gradle `bootBuildImage` task or Maven
`spring-boot:build-image` goal on a Linux distribution with SELinux
enabled, binding the Docker socket in the builder container might
fail. This commit disables the `label` security policy in the builder
container to prevent this type of failure.

Fixes gh-32000
2022-08-19 13:56:34 -05:00
Phillip Webb 07c0a8bced Fix SecurityManager deprecation issues
See gh-32086
2022-08-17 13:22:40 -07:00
Phillip Webb 4ec2e357d9 Merge branch '2.7.x'
See gh-32086
2022-08-17 12:49:52 -07:00
Phillip Webb 60e1cc510c Merge branch '2.6.x' into 2.7.x
See gh-32085
2022-08-17 12:48:21 -07:00
Phillip Webb bd74344025 Revert "Don't close jar files early"
This reverts commit b42f056ddb.
2022-08-17 11:38:42 -07:00
Phillip Webb 674022d401 Revert "Don't close nested jars or wrapper when parent is closed"
This reverts commit 360eb027be.
2022-08-17 11:37:19 -07:00
Stephane Nicoll 2e3c3efd44 Merge branch '2.7.x'
Closes gh-32098
2022-08-17 08:34:52 +02:00
Stephane Nicoll 1c6624db44 Merge branch '2.6.x' into 2.7.x
Closes gh-32097
2022-08-17 08:34:38 +02:00
Stephane Nicoll e94ddfa589 Polish "Explicit error message if source is not an archive"
See gh-31997
2022-08-17 08:33:54 +02:00
Nils Hartmann a0f273a041 Explicit error message if source is not an archive
This commit split the existing assertion to provide an explicit error
message if the source file is not an archive.

See gh-31997
2022-08-17 08:30:03 +02:00
Phillip Webb ee2bd9e065 Merge branch '2.7.x'
Closes gh-32086
2022-08-15 17:59:28 -07:00
Phillip Webb ef7aac8c14 Merge branch '2.6.x' into 2.7.x
Closes gh-32085
2022-08-15 17:59:06 -07:00
Phillip Webb 360eb027be Don't close nested jars or wrapper when parent is closed
Update `JarFile` so that the `close()` method no longer closes nested
jars or the wrapper. Prior to this commit it was possible for a parent
jar file to be garbage collected and closed even though references still
existed to the nested jars. When this happened the nested jars would get
closed and any access to entries would result in `JarFile.ensureOpen()`
throwing an `IllegalStateException`. The user would often not see this
exception directly, but rather find `ClassNotFoundException` being
thrown.

Fixes gh-31853
2022-08-15 17:55:25 -07:00
Andy Wilkinson a8ae7a1e44 Fix Gradle AOT integration test on Windows
See gh-31970
2022-08-15 10:21:42 +01:00
Stephane Nicoll 4a00d76b85 Adapt integration tests to proxy changes in Spring Framework 2022-08-13 13:56:09 +02:00
Stephane Nicoll 332419e3a7 Remove extra 'build' directory
See gh-32069
2022-08-12 17:47:38 +02:00
Stephane Nicoll e21041ce65 Harmonize location of generated classes processed Ahead-of-time
Closes gh-32069
2022-08-11 17:07:16 +02:00
Andy Wilkinson 9caad3d31b Merge branch '2.6.x' into 2.7.x
Closes gh-32059
2022-08-10 12:28:26 +01:00
Andy Wilkinson c9e69f555e Test our Gradle plugin against Gradle 7.5.1
Closes gh-32058
2022-08-10 12:27:47 +01:00
Andy Wilkinson cb18eb095b Make transitive runtime dependencies available to AOT processing
Closes gh-31970
2022-08-03 13:54:50 +01:00
Johnny Lim 6a4681baf5 Polish
See gh-31948
2022-08-02 15:14:23 +02:00
Andy Wilkinson 8a2cdb9759 Merge branch '2.7.x'
Closes gh-31950
2022-08-01 20:51:40 +01:00
Andy Wilkinson 012fbb3a57 Merge branch '2.6.x' into 2.7.x
Closes gh-31949
2022-08-01 20:51:18 +01:00
Andy Wilkinson c0daede1aa Ensure that jarmode jar added to an app has same SHA as published jar
Closes gh-31862
2022-08-01 20:49:10 +01:00
Phillip Webb 22144987e9 Update copyright year of changed files 2022-07-29 12:10:03 +01:00
Phillip Webb e08c16dfd6 Polish 2022-07-29 12:10:02 +01:00
Stephane Nicoll 41e8697445 Polish 2022-07-29 10:00:54 +02:00
Stephane Nicoll da324c8b03 Merge branch '2.7.x' 2022-07-28 16:07:26 +02:00
Stephane Nicoll 6786659aae Merge branch '2.6.x' into 2.7.x 2022-07-28 16:07:18 +02:00
Stephane Nicoll 7d860df5f0 Polish 2022-07-28 16:05:16 +02:00
Stephane Nicoll b0bc7cd85b Reuse JavaProcessExecutor
See gh-31682
2022-07-28 16:00:06 +02:00
Stephane Nicoll c3ae6519f4 Reuse SpringApplicationClassFinder
See gh-31682
2022-07-28 16:00:05 +02:00
Stephane Nicoll 472b0b8bcb Remove AbstractApplicationRunMojo intermediate layer
This commit reverts the intermediate layer that was created to
accommodate with the AOT use case.

See gh-31682
2022-07-28 16:00:05 +02:00
Stephane Nicoll 6f8b9288f3 Extract AotGenerateMojo to its own structure
This commit stops AotGenerateMojo from being an extension of the
regular run infrastructure and used the opportunity to extract a
number of utility classes to run a Java process.

As a result, not all features of running an application is supported
and exposed options now are targeted against AOT.

See gh-31682
2022-07-28 16:00:05 +02:00
Phillip Webb 35a65cf82e Merge branch '2.7.x'
Closes gh-31876
2022-07-26 17:48:00 +01:00
Phillip Webb fd076ab9ef Merge branch '2.6.x' into 2.7.x
Closes gh-31875
2022-07-26 17:46:20 +01:00
aoyvx 8c93d2e8a7 Ensure PROTOCOL_HANDLER system property is reset
See gh-31870
2022-07-26 17:20:55 +01:00
Phillip Webb 7377d85096 Merge branch '2.7.x'
Closes gh-31866
2022-07-26 12:18:14 +01:00
Phillip Webb a4ef6a7c5c Merge branch '2.6.x' into 2.7.x
Closes gh-31865
2022-07-26 12:13:16 +01:00
Phillip Webb f8412847dc Update copyright year for "Fix typos in code and documentation"
See gh-31734
2022-07-26 12:08:30 +01:00
Marc Wrobel dbfc6bded4 Fix typos in code and documentation
See gh-31734
2022-07-26 12:08:07 +01:00
Phillip Webb b93dbd56e8 Merge branch '2.7.x' 2022-07-26 10:51:17 +01:00
Phillip Webb 3931e82841 Merge branch '2.6.x' into 2.7.x 2022-07-26 10:50:42 +01:00
Phillip Webb 4bcec6e0ee Polish 2022-07-26 10:50:01 +01:00
Andy Wilkinson 6c28156b29 Avoid config-time creation of AOT source set's tasks
Closes gh-31844
2022-07-22 14:14:03 +01:00
Scott Frederick 6f65777035 Merge branch '2.7.x'
Closes gh-31827
2022-07-20 17:31:37 -05:00
Scott Frederick 9da38c8d2d Merge branch '2.6.x' into 2.7.x
Closes gh-31826
2022-07-20 17:29:58 -05:00
Scott Frederick 4e0b3aad9f Clarify how docker image publishing registry is determined
Closes gh-31820
2022-07-20 17:29:40 -05:00
Scott Frederick cf7a163c6d Merge branch '2.7.x' 2022-07-20 16:07:32 -05:00