Browse Source

Harmonize AOT goal/task names

Closes gh-31918
pull/32186/head
Phillip Webb 3 years ago
parent
commit
ed42823bd2
  1. 4
      spring-boot-project/spring-boot-starters/spring-boot-starter-parent/build.gradle
  2. 4
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/reacting.adoc
  3. 18
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java
  4. 6
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/aot/ProcessAot.java
  5. 20
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests.java
  6. 0
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-applyingAotPluginCreatesProcessAotTask.gradle
  7. 0
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-noProcessAotTaskWithoutAotPluginApplied.gradle
  8. 4
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processAotHasLibraryResourcesOnItsClasspath.gradle
  9. 4
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle
  10. 6
      spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/aot.adoc
  11. 4
      spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/maven/aot/pom.xml
  12. 2
      spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/aot-class-proxy/pom.xml
  13. 2
      spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/aot-jdk-proxy/pom.xml
  14. 2
      spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/aot/pom.xml
  15. 4
      spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessAotMojo.java

4
spring-boot-project/spring-boot-starters/spring-boot-starter-parent/build.gradle

@ -233,9 +233,9 @@ publishing.publications.withType(MavenPublication) { @@ -233,9 +233,9 @@ publishing.publications.withType(MavenPublication) {
delegate.artifactId('spring-boot-maven-plugin')
executions {
execution {
delegate.id('aot-generate')
delegate.id('process-aot')
goals {
delegate.goal('aot-generate')
delegate.goal('process-aot')
}
}
}

4
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/reacting.adoc

@ -70,8 +70,8 @@ When Gradle's {application-plugin}[`application` plugin] is applied to a project @@ -70,8 +70,8 @@ When Gradle's {application-plugin}[`application` plugin] is applied to a project
When the {nbt-gradle-plugin}[GraalVM Native Image plugin] is applied to a project, the Spring Boot plugin:
. Applies the `org.springframework.boot.aot` plugin that:
.. Registers a `GenerateAotSources` task named `generateAotSources` that will generate AOT-optimized source code for the application.
.. Configures the Java compilation and process resources tasks for the `aot` source set to depend upon `generateAotSources`.
.. Registers a `ProcessAot` task named `processAot` that will generate AOT-optimized source code for the application.
.. Configures the Java compilation and process resources tasks for the `aot` source set to depend upon `processAot`.
. Adds the output of the `aot` source set to the classpath of the `nativeCompile` task.
. Configures the GraalVM extension to disable Toolchain detection.

18
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java

@ -34,7 +34,7 @@ import org.gradle.api.tasks.SourceSet; @@ -34,7 +34,7 @@ import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.SourceSetContainer;
import org.gradle.api.tasks.TaskProvider;
import org.springframework.boot.gradle.tasks.aot.GenerateAotSources;
import org.springframework.boot.gradle.tasks.aot.ProcessAot;
/**
* Gradle plugin for Spring Boot AOT.
@ -50,9 +50,9 @@ public class SpringBootAotPlugin implements Plugin<Project> { @@ -50,9 +50,9 @@ public class SpringBootAotPlugin implements Plugin<Project> {
public static final String AOT_SOURCE_SET_NAME = "aot";
/**
* Name of the default {@link GenerateAotSources} task.
* Name of the default {@link ProcessAot} task.
*/
public static final String GENERATE_AOT_SOURCES_TASK_NAME = "generateAotSources";
public static final String PROCESS_AOT_TASK_NAME = "processAot";
@Override
public void apply(Project project) {
@ -60,7 +60,7 @@ public class SpringBootAotPlugin implements Plugin<Project> { @@ -60,7 +60,7 @@ public class SpringBootAotPlugin implements Plugin<Project> {
plugins.withType(JavaPlugin.class).all((javaPlugin) -> {
plugins.withType(SpringBootPlugin.class).all((bootPlugin) -> {
SourceSet aotSourceSet = configureAotSourceSet(project);
registerGenerateAotSourcesTask(project, aotSourceSet);
registerProcessAotTask(project, aotSourceSet);
});
});
}
@ -97,11 +97,11 @@ public class SpringBootAotPlugin implements Plugin<Project> { @@ -97,11 +97,11 @@ public class SpringBootAotPlugin implements Plugin<Project> {
attributes.attribute(Usage.USAGE_ATTRIBUTE, javaRuntime);
}
private void registerGenerateAotSourcesTask(Project project, SourceSet aotSourceSet) {
private void registerProcessAotTask(Project project, SourceSet aotSourceSet) {
TaskProvider<ResolveMainClassName> resolveMainClassName = project.getTasks()
.named(SpringBootPlugin.RESOLVE_MAIN_CLASS_NAME_TASK_NAME, ResolveMainClassName.class);
TaskProvider<GenerateAotSources> generateAotSources = project.getTasks()
.register(GENERATE_AOT_SOURCES_TASK_NAME, GenerateAotSources.class, (task) -> {
TaskProvider<ProcessAot> processAot = project.getTasks().register(PROCESS_AOT_TASK_NAME, ProcessAot.class,
(task) -> {
Provider<Directory> generatedClasses = project.getLayout().getBuildDirectory()
.dir("generated/aotClasses");
aotSourceSet.getOutput().dir(generatedClasses);
@ -114,9 +114,9 @@ public class SpringBootAotPlugin implements Plugin<Project> { @@ -114,9 +114,9 @@ public class SpringBootAotPlugin implements Plugin<Project> {
task.getArtifactId().set(project.provider(() -> project.getName()));
});
project.getTasks().named(aotSourceSet.getCompileJavaTaskName())
.configure((compileJava) -> compileJava.dependsOn(generateAotSources));
.configure((compileJava) -> compileJava.dependsOn(processAot));
project.getTasks().named(aotSourceSet.getProcessResourcesTaskName())
.configure((processResources) -> processResources.dependsOn(generateAotSources));
.configure((processResources) -> processResources.dependsOn(processAot));
}
}

6
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/aot/GenerateAotSources.java → spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/aot/ProcessAot.java

@ -28,13 +28,13 @@ import org.gradle.api.tasks.OutputDirectory; @@ -28,13 +28,13 @@ import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.TaskAction;
/**
* Custom {@link JavaExec} task for generating sources ahead of time.
* Custom {@link JavaExec} task for processing code ahead-of-time.
*
* @author Andy Wilkinson
* @since 3.0.0
*/
@CacheableTask
public class GenerateAotSources extends JavaExec {
public class ProcessAot extends JavaExec {
private final Property<String> applicationClass;
@ -48,7 +48,7 @@ public class GenerateAotSources extends JavaExec { @@ -48,7 +48,7 @@ public class GenerateAotSources extends JavaExec {
private final Property<String> artifactId;
public GenerateAotSources() {
public ProcessAot() {
this.applicationClass = getProject().getObjects().property(String.class);
this.sourcesDir = getProject().getObjects().directoryProperty();
this.resourcesDir = getProject().getObjects().directoryProperty();

20
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests.java

@ -39,30 +39,30 @@ class SpringBootAotPluginIntegrationTests { @@ -39,30 +39,30 @@ class SpringBootAotPluginIntegrationTests {
GradleBuild gradleBuild;
@TestTemplate
void noGenerateAotSourcesTaskWithoutAotPluginApplied() {
assertThat(this.gradleBuild.build("taskExists", "-PtaskName=generateAotSources").getOutput())
.contains("generateAotSources exists = false");
void noProcessAotTaskWithoutAotPluginApplied() {
assertThat(this.gradleBuild.build("taskExists", "-PtaskName=processAot").getOutput())
.contains("processAot exists = false");
}
@TestTemplate
void applyingAotPluginCreatesGenerateAotSourcesTask() {
assertThat(this.gradleBuild.build("taskExists", "-PtaskName=generateAotSources").getOutput())
.contains("generateAotSources exists = true");
void applyingAotPluginCreatesProcessAotTask() {
assertThat(this.gradleBuild.build("taskExists", "-PtaskName=processAot").getOutput())
.contains("processAot exists = true");
}
@TestTemplate
void generateAotSourcesHasLibraryResourcesOnItsClasspath() throws IOException {
void processAotHasLibraryResourcesOnItsClasspath() throws IOException {
File settings = new File(this.gradleBuild.getProjectDir(), "settings.gradle");
Files.write(settings.toPath(), List.of("include 'library'"));
File library = new File(this.gradleBuild.getProjectDir(), "library");
library.mkdirs();
Files.write(library.toPath().resolve("build.gradle"), List.of("plugins {", " id 'java-library'", "}"));
assertThat(this.gradleBuild.build("generateAotSourcesClasspath").getOutput()).contains("library.jar");
assertThat(this.gradleBuild.build("processAotClasspath").getOutput()).contains("library.jar");
}
@TestTemplate
void generateAotSourcesHasTransitiveRuntimeDependenciesOnItsClasspath() {
String output = this.gradleBuild.build("generateAotSourcesClasspath").getOutput();
void processAotHasTransitiveRuntimeDependenciesOnItsClasspath() {
String output = this.gradleBuild.build("processAotClasspath").getOutput();
assertThat(output).contains("org.jboss.logging" + File.separatorChar + "jboss-logging");
}

0
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-applyingAotPluginCreatesGenerateAotSourcesTask.gradle → spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-applyingAotPluginCreatesProcessAotTask.gradle

0
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-noGenerateAotSourcesTaskWithoutAotPluginApplied.gradle → spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-noProcessAotTaskWithoutAotPluginApplied.gradle

4
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-generateAotSourcesHasLibraryResourcesOnItsClasspath.gradle → spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processAotHasLibraryResourcesOnItsClasspath.gradle

@ -8,8 +8,8 @@ dependencies { @@ -8,8 +8,8 @@ dependencies {
implementation project(":library")
}
task('generateAotSourcesClasspath') {
task('processAotClasspath') {
doFirst {
tasks.findByName('generateAotSources').classpath.files.each { println it }
tasks.findByName('processAot').classpath.files.each { println it }
}
}

4
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-generateAotSourcesHasTransitiveRuntimeDependenciesOnItsClasspath.gradle → spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests-processAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle

@ -12,8 +12,8 @@ dependencies { @@ -12,8 +12,8 @@ dependencies {
implementation "org.hibernate.orm:hibernate-core:6.1.1.Final"
}
task('generateAotSourcesClasspath') {
task('processAotClasspath') {
doFirst {
tasks.findByName('generateAotSources').classpath.files.each { println it }
tasks.findByName('processAot').classpath.files.each { println it }
}
}

6
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/aot.adoc

@ -6,7 +6,7 @@ Based on your `@SpringBootApplication`-annotated main class, the AOT engine gene @@ -6,7 +6,7 @@ Based on your `@SpringBootApplication`-annotated main class, the AOT engine gene
Additional post-processing of the factory is possible using callbacks.
For instance, these are used to generate the necessary reflection configuration that GraalVM needs to initialize the context in a native image.
To configure your application to use this feature, add an execution for the `aot-generate` goal, as shown in the following example:
To configure your application to use this feature, add an execution for the `process-aot` goal, as shown in the following example:
[source,xml,indent=0,subs="verbatim,attributes",tabsize=4]
----
@ -16,7 +16,7 @@ include::../maven/aot/pom.xml[tags=aot] @@ -16,7 +16,7 @@ include::../maven/aot/pom.xml[tags=aot]
As the `BeanFactory` is fully prepared at build-time, conditions are also evaluated.
This has an important difference compared to what a regular Spring Boot application does at runtime.
For instance, if you want to opt-in or opt-out for certain features, you need to configure the environment used at build time to do so.
The `aot-generate` goal shares a number of properties with the <<run,run goal>> for that reason.
The `process-aot` goal shares a number of properties with the <<run,run goal>> for that reason.
include::goals/aot-generate.adoc[leveloffset=+1]
include::goals/process-aot.adoc[leveloffset=+1]

4
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/maven/aot/pom.xml

@ -10,9 +10,9 @@ @@ -10,9 +10,9 @@
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>aot-generate</id>
<id>process-aot</id>
<goals>
<goal>aot-generate</goal>
<goal>process-aot</goal>
</goals>
</execution>
</executions>

2
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/aot-class-proxy/pom.xml

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
<executions>
<execution>
<goals>
<goal>aot-generate</goal>
<goal>process-aot</goal>
</goals>
</execution>
</executions>

2
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/aot-jdk-proxy/pom.xml

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
<executions>
<execution>
<goals>
<goal>aot-generate</goal>
<goal>process-aot</goal>
</goals>
</execution>
</executions>

2
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/aot/pom.xml

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
<executions>
<execution>
<goals>
<goal>aot-generate</goal>
<goal>process-aot</goal>
</goals>
</execution>
</executions>

4
spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AotGenerateMojo.java → spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessAotMojo.java

@ -57,10 +57,10 @@ import org.springframework.util.ObjectUtils; @@ -57,10 +57,10 @@ import org.springframework.util.ObjectUtils;
* @author Andy Wilkinson
* @since 3.0.0
*/
@Mojo(name = "aot-generate", defaultPhase = LifecyclePhase.PREPARE_PACKAGE, threadSafe = true,
@Mojo(name = "process-aot", defaultPhase = LifecyclePhase.PREPARE_PACKAGE, threadSafe = true,
requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME,
requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME)
public class AotGenerateMojo extends AbstractDependencyFilterMojo {
public class ProcessAotMojo extends AbstractDependencyFilterMojo {
private static final String AOT_PROCESSOR_CLASS_NAME = "org.springframework.boot.AotProcessor";
Loading…
Cancel
Save