2495 Commits

Author SHA1 Message Date
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 b42f056ddbfd5041ef80d2d909dd2f5e51ec3ff0.
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 360eb027befd51012614f5938fb9cdc9f557a577.
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