Merge branch '3.0.x' into 3.1.x

Closes gh-36822
This commit is contained in:
Andy Wilkinson 2023-08-09 09:16:38 +01:00
commit 9f2e592b9b
6 changed files with 260 additions and 13 deletions

View File

@ -21,9 +21,11 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;
import org.gradle.api.DefaultTask;
import org.gradle.api.Task;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.TaskAction;
@ -45,6 +47,8 @@ public class DocumentPluginGoals extends DefaultTask {
private File outputDir;
private Map<String, String> goalSections;
@OutputDirectory
public File getOutputDir() {
return this.outputDir;
@ -54,6 +58,15 @@ public class DocumentPluginGoals extends DefaultTask {
this.outputDir = outputDir;
}
@Input
public Map<String, String> getGoalSections() {
return this.goalSections;
}
public void setGoalSections(Map<String, String> goalSections) {
this.goalSections = goalSections;
}
@InputFile
public File getPluginXml() {
return this.pluginXml;
@ -79,7 +92,7 @@ public class DocumentPluginGoals extends DefaultTask {
writer.println("| Goal | Description");
writer.println();
for (Mojo mojo : plugin.getMojos()) {
writer.printf("| <<goals-%s,%s:%s>>%n", mojo.getGoal(), plugin.getGoalPrefix(), mojo.getGoal());
writer.printf("| <<%s,%s:%s>>%n", goalSectionId(mojo), plugin.getGoalPrefix(), mojo.getGoal());
writer.printf("| %s%n", mojo.getDescription());
writer.println();
}
@ -89,7 +102,7 @@ public class DocumentPluginGoals extends DefaultTask {
private void documentMojo(Plugin plugin, Mojo mojo) throws IOException {
try (PrintWriter writer = new PrintWriter(new FileWriter(new File(this.outputDir, mojo.getGoal() + ".adoc")))) {
String sectionId = "goals-" + mojo.getGoal();
String sectionId = goalSectionId(mojo);
writer.println();
writer.println();
writer.printf("[[%s]]%n", sectionId);
@ -99,12 +112,11 @@ public class DocumentPluginGoals extends DefaultTask {
writer.println(mojo.getDescription());
List<Parameter> parameters = mojo.getParameters().stream().filter(Parameter::isEditable).toList();
List<Parameter> requiredParameters = parameters.stream().filter(Parameter::isRequired).toList();
String parametersSectionId = sectionId + "-parameters";
String detailsSectionId = parametersSectionId + "-details";
String detailsSectionId = sectionId + ".parameter-details";
if (!requiredParameters.isEmpty()) {
writer.println();
writer.println();
writer.printf("[[%s-required]]%n", parametersSectionId);
writer.printf("[[%s.required-parameters]]%n", sectionId);
writer.println("== Required parameters");
writeParametersTable(writer, detailsSectionId, requiredParameters);
}
@ -114,7 +126,7 @@ public class DocumentPluginGoals extends DefaultTask {
if (!optionalParameters.isEmpty()) {
writer.println();
writer.println();
writer.printf("[[%s-optional]]%n", parametersSectionId);
writer.printf("[[%s.optional-parameters]]%n", sectionId);
writer.println("== Optional parameters");
writeParametersTable(writer, detailsSectionId, optionalParameters);
}
@ -126,6 +138,15 @@ public class DocumentPluginGoals extends DefaultTask {
}
}
private String goalSectionId(Mojo mojo) {
String goalSection = this.goalSections.get(mojo.getGoal());
if (goalSection == null) {
throw new IllegalStateException("Goal '" + mojo.getGoal() + "' has not be assigned to a section");
}
String sectionId = goalSection + "." + mojo.getGoal() + "-goal";
return sectionId;
}
private void writeParametersTable(PrintWriter writer, String detailsSectionId, List<Parameter> parameters) {
writer.println("[cols=\"3,2,3\"]");
writer.println("|===");
@ -133,7 +154,7 @@ public class DocumentPluginGoals extends DefaultTask {
writer.println();
for (Parameter parameter : parameters) {
String name = parameter.getName();
writer.printf("| <<%s-%s,%s>>%n", detailsSectionId, name, name);
writer.printf("| <<%s.%s,%s>>%n", detailsSectionId, parameterId(name), name);
writer.printf("| `%s`%n", typeNameToJavadocLink(shortTypeName(parameter.getType()), parameter.getType()));
String defaultValue = parameter.getDefaultValue();
if (defaultValue != null) {
@ -152,7 +173,7 @@ public class DocumentPluginGoals extends DefaultTask {
String name = parameter.getName();
writer.println();
writer.println();
writer.printf("[[%s-%s]]%n", sectionId, name);
writer.printf("[[%s.%s]]%n", sectionId, parameterId(name));
writer.printf("=== `%s`%n", name);
writer.println(parameter.getDescription());
writer.println();
@ -168,6 +189,20 @@ public class DocumentPluginGoals extends DefaultTask {
}
}
private String parameterId(String name) {
StringBuilder id = new StringBuilder(name.length() + 4);
for (char c : name.toCharArray()) {
if (Character.isLowerCase(c)) {
id.append(c);
}
else {
id.append("-");
id.append(Character.toLowerCase(c));
}
}
return id.toString();
}
private void writeDetail(PrintWriter writer, String name, String value) {
writer.printf("| %s%n", name);
writer.printf("| `%s`%n", value);

View File

@ -13,6 +13,8 @@ configurations {
}
dependencies {
asciidoctorExtensions("io.spring.asciidoctor:spring-asciidoctor-extensions-section-ids")
compileOnly("org.apache.maven.plugin-tools:maven-plugin-annotations")
compileOnly("org.sonatype.plexus:plexus-build-api")
compileOnly("org.apache.maven.shared:maven-common-artifact-filters") {
@ -148,3 +150,19 @@ prepareMavenBinaries {
artifacts {
"documentation" zip
}
tasks.named("documentPluginGoals") {
goalSections = [
"build-image": "build-image",
"build-image-no-fork": "build-image",
"build-info": "build-info",
"help": "help",
"process-aot": "aot",
"process-test-aot": "aot",
"repackage": "packaging",
"run": "run",
"start": "integration-tests",
"stop": "integration-tests",
"test-run": "run"
]
}

View File

@ -33,3 +33,197 @@ run-example-active-profiles=run.examples.specify-active-profiles
using-parent-pom=using.parent-pom
using-import=using.import
using-overriding-command-line=using.overriding-command-line
_processing_applications=aot.processing-applications
_using_the_native_profile=aot.processing-applications.using-the-native-profile
_processing_tests=aot.processing-tests
# Consistent section IDs for goals
goals-build-image=build-image.build-image-goal
goals-build-image-no-fork=build-image.build-image-no-fork-goal
goals-build-image-no-fork-parameters-details=build-image.build-image-no-fork-goal.parameter-details
goals-build-image-no-fork-parameters-details-classifier=build-image.build-image-no-fork-goal.parameter-details.classifier
goals-build-image-no-fork-parameters-details-docker=build-image.build-image-no-fork-goal.parameter-details.docker
goals-build-image-no-fork-parameters-details-excludeDevtools=build-image.build-image-no-fork-goal.parameter-details.exclude-devtools
goals-build-image-no-fork-parameters-details-excludeDockerCompose=build-image.build-image-no-fork-goal.parameter-details.exclude-docker-compose
goals-build-image-no-fork-parameters-details-excludeGroupIds=build-image.build-image-no-fork-goal.parameter-details.exclude-group-ids
goals-build-image-no-fork-parameters-details-excludes=build-image.build-image-no-fork-goal.parameter-details.excludes
goals-build-image-no-fork-parameters-details-image=build-image.build-image-no-fork-goal.parameter-details.image
goals-build-image-no-fork-parameters-details-includeSystemScope=build-image.build-image-no-fork-goal.parameter-details.include-system-scope
goals-build-image-no-fork-parameters-details-includes=build-image.build-image-no-fork-goal.parameter-details.includes
goals-build-image-no-fork-parameters-details-layers=build-image.build-image-no-fork-goal.parameter-details.layers
goals-build-image-no-fork-parameters-details-layout=build-image.build-image-no-fork-goal.parameter-details.layout
goals-build-image-no-fork-parameters-details-layoutFactory=build-image.build-image-no-fork-goal.parameter-details.layout-factory
goals-build-image-no-fork-parameters-details-mainClass=build-image.build-image-no-fork-goal.parameter-details.main-class
goals-build-image-no-fork-parameters-details-skip=build-image.build-image-no-fork-goal.parameter-details.skip
goals-build-image-no-fork-parameters-details-sourceDirectory=build-image.build-image-no-fork-goal.parameter-details.source-directory
goals-build-image-no-fork-parameters-optional=build-image.build-image-no-fork-goal.optional-parameters
goals-build-image-no-fork-parameters-required=build-image.build-image-no-fork-goal.required-parameters
goals-build-image-parameters-details=build-image.build-image-goal.parameter-details
goals-build-image-parameters-details-classifier=build-image.build-image-goal.parameter-details.classifier
goals-build-image-parameters-details-docker=build-image.build-image-goal.parameter-details.docker
goals-build-image-parameters-details-excludeDevtools=build-image.build-image-goal.parameter-details.exclude-devtools
goals-build-image-parameters-details-excludeDockerCompose=build-image.build-image-goal.parameter-details.exclude-docker-compose
goals-build-image-parameters-details-excludeGroupIds=build-image.build-image-goal.parameter-details.exclude-group-ids
goals-build-image-parameters-details-excludes=build-image.build-image-goal.parameter-details.excludes
goals-build-image-parameters-details-image=build-image.build-image-goal.parameter-details.image
goals-build-image-parameters-details-includeSystemScope=build-image.build-image-goal.parameter-details.include-system-scope
goals-build-image-parameters-details-includes=build-image.build-image-goal.parameter-details.includes
goals-build-image-parameters-details-layers=build-image.build-image-goal.parameter-details.layers
goals-build-image-parameters-details-layout=build-image.build-image-goal.parameter-details.layout
goals-build-image-parameters-details-layoutFactory=build-image.build-image-goal.parameter-details.layout-factory
goals-build-image-parameters-details-mainClass=build-image.build-image-goal.parameter-details.main-class
goals-build-image-parameters-details-skip=build-image.build-image-goal.parameter-details.skip
goals-build-image-parameters-details-sourceDirectory=build-image.build-image-goal.parameter-details.source-directory
goals-build-image-parameters-optional=build-image.build-image-goal.optional-parameters
goals-build-image-parameters-required=build-image.build-image-goal.required-parameters
goals-build-info=build-info.build-info-goal
goals-build-info-parameters-details=build-info.build-info-goal.parameter-details
goals-build-info-parameters-details-additionalProperties=build-info.build-info-goal.parameter-details.additional-properties
goals-build-info-parameters-details-excludeInfoProperties=build-info.build-info-goal.parameter-details.exclude-info-properties
goals-build-info-parameters-details-outputFile=build-info.build-info-goal.parameter-details.output-file
goals-build-info-parameters-details-skip=build-info.build-info-goal.parameter-details.skip
goals-build-info-parameters-details-time=build-info.build-info-goal.parameter-details.time
goals-build-info-parameters-optional=build-info.build-info-goal.optional-parameters
goals-help=help.help-goal
goals-help-parameters-details=help.help-goal.parameter-details
goals-help-parameters-details-detail=help.help-goal.parameter-details.detail
goals-help-parameters-details-goal=help.help-goal.parameter-details.goal
goals-help-parameters-details-indentSize=help.help-goal.parameter-details.indent-size
goals-help-parameters-details-lineLength=help.help-goal.parameter-details.line-length
goals-help-parameters-optional=help.help-goal.optional-parameters
goals-process-aot=aot.process-aot-goal
goals-process-aot-parameters-details=aot.process-aot-goal.parameter-details
goals-process-aot-parameters-details-arguments=aot.process-aot-goal.parameter-details.arguments
goals-process-aot-parameters-details-classesDirectory=aot.process-aot-goal.parameter-details.classes-directory
goals-process-aot-parameters-details-compilerArguments=aot.process-aot-goal.parameter-details.compiler-arguments
goals-process-aot-parameters-details-excludeGroupIds=aot.process-aot-goal.parameter-details.exclude-group-ids
goals-process-aot-parameters-details-excludes=aot.process-aot-goal.parameter-details.excludes
goals-process-aot-parameters-details-generatedClasses=aot.process-aot-goal.parameter-details.generated-classes
goals-process-aot-parameters-details-generatedResources=aot.process-aot-goal.parameter-details.generated-resources
goals-process-aot-parameters-details-generatedSources=aot.process-aot-goal.parameter-details.generated-sources
goals-process-aot-parameters-details-includes=aot.process-aot-goal.parameter-details.includes
goals-process-aot-parameters-details-jvmArguments=aot.process-aot-goal.parameter-details.jvm-arguments
goals-process-aot-parameters-details-mainClass=aot.process-aot-goal.parameter-details.main-class
goals-process-aot-parameters-details-profiles=aot.process-aot-goal.parameter-details.profiles
goals-process-aot-parameters-details-skip=aot.process-aot-goal.parameter-details.skip
goals-process-aot-parameters-details-systemPropertyVariables=aot.process-aot-goal.parameter-details.system-property-variables
goals-process-aot-parameters-optional=aot.process-aot-goal.optional-parameters
goals-process-aot-parameters-required=aot.process-aot-goal.required-parameters
goals-process-test-aot=aot.process-test-aot-goal
goals-process-test-aot-parameters-details=aot.process-test-aot-goal.parameter-details
goals-process-test-aot-parameters-details-classesDirectory=aot.process-test-aot-goal.parameter-details.classes-directory
goals-process-test-aot-parameters-details-compilerArguments=aot.process-test-aot-goal.parameter-details.compiler-arguments
goals-process-test-aot-parameters-details-excludeGroupIds=aot.process-test-aot-goal.parameter-details.exclude-group-ids
goals-process-test-aot-parameters-details-excludes=aot.process-test-aot-goal.parameter-details.excludes
goals-process-test-aot-parameters-details-generatedClasses=aot.process-test-aot-goal.parameter-details.generated-classes
goals-process-test-aot-parameters-details-generatedResources=aot.process-test-aot-goal.parameter-details.generated-resources
goals-process-test-aot-parameters-details-generatedSources=aot.process-test-aot-goal.parameter-details.generated-sources
goals-process-test-aot-parameters-details-generatedTestClasses=aot.process-test-aot-goal.parameter-details.generated-test-classes
goals-process-test-aot-parameters-details-includes=aot.process-test-aot-goal.parameter-details.includes
goals-process-test-aot-parameters-details-jvmArguments=aot.process-test-aot-goal.parameter-details.jvm-arguments
goals-process-test-aot-parameters-details-skip=aot.process-test-aot-goal.parameter-details.skip
goals-process-test-aot-parameters-details-systemPropertyVariables=aot.process-test-aot-goal.parameter-details.system-property-variables
goals-process-test-aot-parameters-details-testClassesDirectory=aot.process-test-aot-goal.parameter-details.test-classes-directory
goals-process-test-aot-parameters-optional=aot.process-test-aot-goal.optional-parameters
goals-process-test-aot-parameters-required=aot.process-test-aot-goal.required-parameters
goals-repackage=packaging.repackage-goal
goals-repackage-parameters-details=packaging.repackage-goal.parameter-details
goals-repackage-parameters-details-attach=packaging.repackage-goal.parameter-details.attach
goals-repackage-parameters-details-classifier=packaging.repackage-goal.parameter-details.classifier
goals-repackage-parameters-details-embeddedLaunchScript=packaging.repackage-goal.parameter-details.embedded-launch-script
goals-repackage-parameters-details-embeddedLaunchScriptProperties=packaging.repackage-goal.parameter-details.embedded-launch-script-properties
goals-repackage-parameters-details-excludeDevtools=packaging.repackage-goal.parameter-details.exclude-devtools
goals-repackage-parameters-details-excludeDockerCompose=packaging.repackage-goal.parameter-details.exclude-docker-compose
goals-repackage-parameters-details-excludeGroupIds=packaging.repackage-goal.parameter-details.exclude-group-ids
goals-repackage-parameters-details-excludes=packaging.repackage-goal.parameter-details.excludes
goals-repackage-parameters-details-executable=packaging.repackage-goal.parameter-details.executable
goals-repackage-parameters-details-includeSystemScope=packaging.repackage-goal.parameter-details.include-system-scope
goals-repackage-parameters-details-includes=packaging.repackage-goal.parameter-details.includes
goals-repackage-parameters-details-layers=packaging.repackage-goal.parameter-details.layers
goals-repackage-parameters-details-layout=packaging.repackage-goal.parameter-details.layout
goals-repackage-parameters-details-layoutFactory=packaging.repackage-goal.parameter-details.layout-factory
goals-repackage-parameters-details-mainClass=packaging.repackage-goal.parameter-details.main-class
goals-repackage-parameters-details-outputDirectory=packaging.repackage-goal.parameter-details.output-directory
goals-repackage-parameters-details-outputTimestamp=packaging.repackage-goal.parameter-details.output-timestamp
goals-repackage-parameters-details-requiresUnpack=packaging.repackage-goal.parameter-details.requires-unpack
goals-repackage-parameters-details-skip=packaging.repackage-goal.parameter-details.skip
goals-repackage-parameters-optional=packaging.repackage-goal.optional-parameters
goals-repackage-parameters-required=packaging.repackage-goal.required-parameters
goals-run=run.run-goal
goals-run-parameters-details=run.run-goal.parameter-details
goals-run-parameters-details-addResources=run.run-goal.parameter-details.add-resources
goals-run-parameters-details-agents=run.run-goal.parameter-details.agents
goals-run-parameters-details-arguments=run.run-goal.parameter-details.arguments
goals-run-parameters-details-classesDirectory=run.run-goal.parameter-details.classes-directory
goals-run-parameters-details-commandlineArguments=run.run-goal.parameter-details.commandline-arguments
goals-run-parameters-details-directories=run.run-goal.parameter-details.directories
goals-run-parameters-details-environmentVariables=run.run-goal.parameter-details.environment-variables
goals-run-parameters-details-excludeGroupIds=run.run-goal.parameter-details.exclude-group-ids
goals-run-parameters-details-excludes=run.run-goal.parameter-details.excludes
goals-run-parameters-details-includes=run.run-goal.parameter-details.includes
goals-run-parameters-details-jvmArguments=run.run-goal.parameter-details.jvm-arguments
goals-run-parameters-details-mainClass=run.run-goal.parameter-details.main-class
goals-run-parameters-details-noverify=run.run-goal.parameter-details.noverify
goals-run-parameters-details-optimizedLaunch=run.run-goal.parameter-details.optimized-launch
goals-run-parameters-details-profiles=run.run-goal.parameter-details.profiles
goals-run-parameters-details-skip=run.run-goal.parameter-details.skip
goals-run-parameters-details-systemPropertyVariables=run.run-goal.parameter-details.system-property-variables
goals-run-parameters-details-useTestClasspath=run.run-goal.parameter-details.use-test-classpath
goals-run-parameters-details-workingDirectory=run.run-goal.parameter-details.working-directory
goals-run-parameters-optional=run.run-goal.optional-parameters
goals-run-parameters-required=run.run-goal.required-parameters
goals-start=integration-tests.start-goal
goals-start-parameters-details=integration-tests.start-goal.parameter-details
goals-start-parameters-details-addResources=integration-tests.start-goal.parameter-details.add-resources
goals-start-parameters-details-agents=integration-tests.start-goal.parameter-details.agents
goals-start-parameters-details-arguments=integration-tests.start-goal.parameter-details.arguments
goals-start-parameters-details-classesDirectory=integration-tests.start-goal.parameter-details.classes-directory
goals-start-parameters-details-commandlineArguments=integration-tests.start-goal.parameter-details.commandline-arguments
goals-start-parameters-details-directories=integration-tests.start-goal.parameter-details.directories
goals-start-parameters-details-environmentVariables=integration-tests.start-goal.parameter-details.environment-variables
goals-start-parameters-details-excludeGroupIds=integration-tests.start-goal.parameter-details.exclude-group-ids
goals-start-parameters-details-excludes=integration-tests.start-goal.parameter-details.excludes
goals-start-parameters-details-includes=integration-tests.start-goal.parameter-details.includes
goals-start-parameters-details-jmxName=integration-tests.start-goal.parameter-details.jmx-name
goals-start-parameters-details-jmxPort=integration-tests.start-goal.parameter-details.jmx-port
goals-start-parameters-details-jvmArguments=integration-tests.start-goal.parameter-details.jvm-arguments
goals-start-parameters-details-mainClass=integration-tests.start-goal.parameter-details.main-class
goals-start-parameters-details-maxAttempts=integration-tests.start-goal.parameter-details.max-attempts
goals-start-parameters-details-noverify=integration-tests.start-goal.parameter-details.noverify
goals-start-parameters-details-profiles=integration-tests.start-goal.parameter-details.profiles
goals-start-parameters-details-skip=integration-tests.start-goal.parameter-details.skip
goals-start-parameters-details-systemPropertyVariables=integration-tests.start-goal.parameter-details.system-property-variables
goals-start-parameters-details-useTestClasspath=integration-tests.start-goal.parameter-details.use-test-classpath
goals-start-parameters-details-wait=integration-tests.start-goal.parameter-details.wait
goals-start-parameters-details-workingDirectory=integration-tests.start-goal.parameter-details.working-directory
goals-start-parameters-optional=integration-tests.start-goal.optional-parameters
goals-start-parameters-required=integration-tests.start-goal.required-parameters
goals-stop=integration-tests.stop-goal
goals-stop-parameters-details=integration-tests.stop-goal.parameter-details
goals-stop-parameters-details-jmxName=integration-tests.stop-goal.parameter-details.jmx-name
goals-stop-parameters-details-jmxPort=integration-tests.stop-goal.parameter-details.jmx-port
goals-stop-parameters-details-skip=integration-tests.stop-goal.parameter-details.skip
goals-stop-parameters-optional=integration-tests.stop-goal.optional-parameters
goals-test-run=run.test-run-goal
goals-test-run-parameters-details=run.test-run-goal.parameter-details
goals-test-run-parameters-details-addResources=run.test-run-goal.parameter-details.add-resources
goals-test-run-parameters-details-agents=run.test-run-goal.parameter-details.agents
goals-test-run-parameters-details-arguments=run.test-run-goal.parameter-details.arguments
goals-test-run-parameters-details-classesDirectory=run.test-run-goal.parameter-details.classes-directory
goals-test-run-parameters-details-commandlineArguments=run.test-run-goal.parameter-details.commandline-arguments
goals-test-run-parameters-details-directories=run.test-run-goal.parameter-details.directories
goals-test-run-parameters-details-environmentVariables=run.test-run-goal.parameter-details.environment-variables
goals-test-run-parameters-details-excludeGroupIds=run.test-run-goal.parameter-details.exclude-group-ids
goals-test-run-parameters-details-excludes=run.test-run-goal.parameter-details.excludes
goals-test-run-parameters-details-includes=run.test-run-goal.parameter-details.includes
goals-test-run-parameters-details-jvmArguments=run.test-run-goal.parameter-details.jvm-arguments
goals-test-run-parameters-details-mainClass=run.test-run-goal.parameter-details.main-class
goals-test-run-parameters-details-noverify=run.test-run-goal.parameter-details.noverify
goals-test-run-parameters-details-optimizedLaunch=run.test-run-goal.parameter-details.optimized-launch
goals-test-run-parameters-details-profiles=run.test-run-goal.parameter-details.profiles
goals-test-run-parameters-details-skip=run.test-run-goal.parameter-details.skip
goals-test-run-parameters-details-systemPropertyVariables=run.test-run-goal.parameter-details.system-property-variables
goals-test-run-parameters-details-testClassesDirectory=run.test-run-goal.parameter-details.test-classes-directory
goals-test-run-parameters-details-workingDirectory=run.test-run-goal.parameter-details.working-directory
goals-test-run-parameters-optional=run.test-run-goal.optional-parameters
goals-test-run-parameters-required=run.test-run-goal.required-parameters

View File

@ -9,7 +9,7 @@ NOTE: For an overview of GraalVM Native Images support in Spring Boot, check the
The Spring Boot Maven plugin offers goals that can be used to perform AOT processing on both application and test code.
[[aot.processing-applications]]
== Processing Applications
To configure your application to use this feature, add an execution for the `process-aot` goal, as shown in the following example:
@ -24,7 +24,7 @@ For instance, if you want to opt-in or opt-out for certain features, you need to
The `process-aot` goal shares a number of properties with the <<run,run goal>> for that reason.
[[aot.processing-applications.using-the-native-profile]]
=== Using the Native Profile
If you use `spring-boot-starter-parent` as the `parent` of your project, a `native` profile can be used to streamline the steps required to build a native image.
@ -77,7 +77,7 @@ Such module must define the Native Build Tools and Spring Boot plugins as descri
include::goals/process-aot.adoc[leveloffset=+1]
[[aot.processint-tests]]
== Processing Tests
The AOT engine can be applied to JUnit 5 tests that use Spring's Test Context Framework.
Suitable tests are processed by the AOT engine in order to generate `ApplicationContextInitialzer` code.

View File

@ -210,7 +210,7 @@ include::../maven/packaging/custom-layout-pom.xml[tags=custom-layout]
The layout factory is provided as an implementation of `LayoutFactory` (from `spring-boot-loader-tools`) explicitly specified in the pom.
If there is only one custom `LayoutFactory` on the plugin classpath and it is listed in `META-INF/spring.factories` then it is unnecessary to explicitly set it in the plugin configuration.
Layout factories are always ignored if an explicit <<goals-repackage-parameters-details-layoutFactory,layout>> is set.
Layout factories are always ignored if an explicit <<packaging.repackage-goal.parameter-details.layout-factory,layout>> is set.

View File

@ -8,7 +8,7 @@ The parent project provides the following features:
* Compilation with `-parameters`.
* A dependency management section, inherited from the `spring-boot-dependencies` POM, that manages the versions of common dependencies.
This dependency management lets you omit `<version>` tags for those dependencies when used in your own POM.
* An execution of the <<goals.adoc#goals-repackage, `repackage` goal>> with a `repackage` execution id.
* An execution of the <<goals.adoc#packaging.repackage-goal, `repackage` goal>> with a `repackage` execution id.
* A `native` profile that configures the build to be able to generate a Native image.
* Sensible https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html[resource filtering].
* Sensible plugin configuration (https://github.com/ktoso/maven-git-commit-id-plugin[Git commit ID], and https://maven.apache.org/plugins/maven-shade-plugin/[shade]).