942 Commits

Author SHA1 Message Date
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
d88f968d22 Merge branch '2.7.x'
Closes gh-33403
2022-11-28 20:20:24 +00:00
Moritz Halbritter
9206b6cda1 Add warning to not disable jar task when building native images
Closes gh-33238
2022-11-18 13:26:59 +01:00
Johnny Lim
6027508cf7 Polish
See gh-33108
2022-11-16 10:00:36 +01:00
Andy Wilkinson
6940e348a7 Try to fix NativeImagePluginActionIntegrationTests on Windows 2022-11-08 11:00:52 +00:00
Andy Wilkinson
443d80ce6e Polish
See gh-32924
2022-11-04 17:23:01 +00: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
Scott Frederick
67af4c0a65 Polish documentation 2022-11-03 15:45:09 -05: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
Scott Frederick
c22e76632c Add Build-Jdk-Spec to jar and war manifest when building with Gradle
This commit adds a `Build-Jdk-Spec` attribute to the manifest in a
jar or war file built with the Spring Boot Gradle plugin. This
aligns the Gradle plugin's behavior with the default Maven plugin
behavior.

This removes the need to set a `BP_JVM_VERSION` environment variable
when invoking Cloud Native Buildpacks, as the Paketo buildpacks will
honor `Build-Jdk-Spec` in a jar or war manifest to determine the
default JVM version.

Fixes gh-32829
2022-10-25 15:48:05 -05:00
Andy Wilkinson
9e6259cd37 Remove development-only dependencies from native image classpath
Fixes gh-32843
2022-10-24 09:22:13 +01:00
Scott Frederick
b78b22b6f6 Allow Gradle task property to be set with String or enum value
See gh-32769
2022-10-20 13:59:54 -05:00
Andy Wilkinson
26e747d2db Fix package tangle in spring-boot-gradle-plugin
Closes gh-32814
2022-10-20 13:12:12 +01:00
Scott Frederick
8acf9afccb Use String instead of enum for Gradle task Property
See gh-32769
2022-10-19 17:23:23 -05:00
Andy Wilkinson
8621be6bba Make consistent use of Property for Gradle task configuration
Closes gh-32769
2022-10-19 19:08:45 +01:00
Andy Wilkinson
2dacddb4d7 Make bootBuildImage produce native image when NBT plugin is applied
Closes gh-32768
2022-10-18 13:12:45 +01:00
Andy Wilkinson
2c756ea874 Use collectReachabilityMetadata task to add metadata to bootJar
Closes gh-32737
2022-10-18 11:25:34 +01:00
Phillip Webb
c16c6bc3b5 Fix reachability argfile format
Update the argfile to a format that actually works when
passed to the `native-image` command.

See gh-32738
2022-10-17 18:59:50 -07:00
Phillip Webb
8358a0e3f3 Fix reachability-metadata.properties location
Update tools to use the correct `reachability-metadata.properties`
location which should include the version number.

See gh-32738
2022-10-17 14:31:38 -07:00
Andy Wilkinson
3082b0c5bf Add a section on AOT to the Gradle plugin's docs
Closes gh-32750
2022-10-17 18:15:34 +01:00
Andy Wilkinson
ff16f6d6c6 Work around configuration cache problem in NBT Gradle Plugin
See gh-32752
See graalvm/native-build-tools#338
2022-10-17 13:58:07 +01:00
Phillip Webb
071649360b Generate 'META-INF/native-image/argfile' file for buildpack use
Update the Maven and Gradle plugin to generate an `argfile` file
file under `META-INF/native-image` that contains `--exclude-config`
arguments that should be passed when generating a native image.

The contents of the file is generated for each nested jar that has a
`reachability-metadata.properties` file containing 'override=true'.

The `reachability-metadata.properties` file is expected to be generated
by the Graal native build tools plugin.

Closes gh-32738
2022-10-14 15:23:06 -07:00
Phillip Webb
430c6b7e9f Downgrade to SLF4J 1.7 for spring-boot-gradle-plugin tests
The downgrade is required for tests to run in Eclipse.

Closes gh-32626
2022-10-14 11:58:16 -07:00
Andy Wilkinson
3ca5c7ff5b Create AOT source sets as soon as the Java plugin is applied
Previously, the AOT source sets were not created until both the
Java and Spring Boot plugins had been applied. This could create
ordering problems when the Spring Boot plugin's native image plugin
action tried to access the AOT source sets to configure the
classpaths of the nativeCompile and nativeTest tasks. If the
plugins were applied in a particular order the AOT source sets
would not exist and a failure would occur.

This commit updates the Spring Boot AOT plugin to create the source
sets as soon as the Java plugin has been applied. This ensure that
they're in place when reacting to the native image plugin being
applied.

Closes gh-32661
2022-10-11 19:58:03 +01:00
Andy Wilkinson
808e0be552 Merge branch '2.7.x'
Closes gh-32679
2022-10-11 19:16:08 +01:00
Andy Wilkinson
1b604e30f7 Merge branch '2.6.x' into 2.7.x
Closes gh-32678
2022-10-11 19:15:33 +01:00
Andy Wilkinson
215eb96355 Improve error handling in SpringBootPlugin
Closes gh-32677
2022-10-11 19:15:23 +01:00
Andy Wilkinson
d351086a06 Adapt to breaking changes to AOT processing entry points
See gh-32550
2022-10-10 22:02:25 +01:00
Phillip Webb
e0b67889a8 Use Stream.toList instead of Stream.collect when possible
Update code to make use of `Stream.toList()` whenever possible.

Closes gh-28177
2022-10-04 00:29:22 -07:00
Stephane Nicoll
e2dd0ef9a4 Adapt AotProcessor to changes in Spring Framework
Closes gh-32560
2022-09-30 16:47:03 +02: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
7c7c34cda1 Fix classpath roots of AOT test processing
This was regressed in 6175c4210dca82776ad26ab140a0ae19704c9fe6 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
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