提前处理

Spring AOT 是一个在构建时分析你的应用并生成优化版本的过程。运行 Spring 是必行步骤应用上下文以本地形象。spring-doc.cadn.net.cn

有关 Spring Boot 中 GraalVM 原生映像支持的概述,请查看参考文档

Spring Boot Maven 插件提供了可用于对应用和测试代码进行 AOT 处理的目标。spring-doc.cadn.net.cn

处理应用

要配置你的应用使用此功能,请添加一个执行进程进攻的进攻目标,如下例所示:spring-doc.cadn.net.cn

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<executions>
		<execution>
			<id>process-aot</id>
			<goals>
				<goal>process-aot</goal>
			</goals>
		</execution>
	</executions>
</plugin>

作为豆子工厂在构建时完全准备好,条件也会被评估。这与普通 Spring Boot 应用程序在运行时所做的作有重要区别。例如,如果你想对某些功能选择加入或退出,你需要配置构建时使用的环境来实现这一点。 这进程进攻的进攻因此,Goal与跑目标共享许多属性。spring-doc.cadn.net.cn

使用 Native 配置文件

如果你使用,Spring靴启动父作为父母你的项目,一个本地配置文件可以用来简化构建原生映像所需的步骤。spring-doc.cadn.net.cn

本地配置文件配置如下内容:spring-doc.cadn.net.cn

使用原始类路径意味着本地图像无法知道生成的清单。双重. 如果你需要读取本地镜像中的清单内容,比如为了获取应用的实现版本,可以配置classes目录可以选择使用普通罐子。spring-doc.cadn.net.cn

要从中受益本地配置文件,一个表示应用程序的模块应定义两个插件,如下示例所示:spring-doc.cadn.net.cn

<plugin>
	<groupId>org.graalvm.buildtools</groupId>
	<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

单个项目可以通过云原生构建包原生图像构建工具,在命令行触发原生图像生成。spring-doc.cadn.net.cn

使用本地通过多模块项目,你可以创建自定义的本地用轮廓来呼应你喜欢的技巧。spring-doc.cadn.net.cn

阶段,将以下内容添加到你多模块项目的根POM中:spring-doc.cadn.net.cn

<profile>
	<id>native</id>
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
					<executions>
						<execution>
							<id>build-image</id>
							<goals>
								<goal>build-image-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</profile>

下面的示例对原生构建工具做了同样的作:spring-doc.cadn.net.cn

<profile>
	<id>native</id>
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.graalvm.buildtools</groupId>
					<artifactId>native-maven-plugin</artifactId>
					<executions>
						<execution>
							<id>build-image</id>
							<goals>
								<goal>compile-no-fork</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</profile>

上述步骤就位后,你可以构建多模块项目,并在相关子模块中生成原生图像,如下示例所示:spring-doc.cadn.net.cn

$ mvn package -Pnative
“相关”子模块是指代表Spring Boot应用的模块。 该模块必须定义如上所述的原生构建工具和 Spring Boot 插件。

Spring Boot:process-aot

org.springframework.boot:spring-boot-maven-plugin:4.0.0spring-doc.cadn.net.cn

在应用中调用进攻引擎。spring-doc.cadn.net.cn

所需参数

名称 类型 默认值

classes目录spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.outputDirectory}spring-doc.cadn.net.cn

生成类spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/classesspring-doc.cadn.net.cn

生成资源spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/resourcesspring-doc.cadn.net.cn

生成的来源spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/sourcesspring-doc.cadn.net.cn

参数细节

参数

AOT处理时应考虑的应用参数。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

参数spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.String[]spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

classes目录

包含应打包到归档中的类和资源文件的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

classes目录spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.outputDirectory}spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

编译器参数

这些参数应当提供给AOT编译进程。在命令行中,确保引号之间包裹多个值。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

编译器参数spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.aot.compiler参数spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

exclusionGroupIds

逗号分隔的groupid名称列表,排除(完全匹配)。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

exclusionGroupIdsspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.excludeGroupIdsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

排除

排除的工件定义集合。这排除元素定义了强制性组IDartifactId(遗物ID组件和可选分类元件。当配置为属性时,值应以逗号分隔,并用冒号分隔:groupId:artifactId,groupId:artifactId:分类器spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

排除spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.exclusionsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

生成类

包含生成类的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

生成类spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/classesspring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

生成资源

包含生成资源的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

生成资源spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/resourcesspring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

生成的来源

包含生成源的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

生成的来源spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/sourcesspring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

包括

包含工件定义的集合。这包括元素定义了强制性组IDartifactId(遗物ID组件和可选分类元件。当配置为属性时,值应以逗号分隔,并用冒号分隔:groupId:artifactId,groupId:artifactId:分类器spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

包括spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

Spring靴。包括spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.2.0spring-doc.cadn.net.cn

jvm论证

JVM论证应该与AOT流程相关联。在命令行中,确保引号之间包裹多个值。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

jvm论证spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.aot.jvmArgumentsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

mainClass

作为AOT进程源的主类名称。如果未指定,将使用第一个编译类,包含“main”方法。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

mainClassspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.aot.main-classspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

配置 文件

AOT处理时需要考虑春季配置文件。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

配置 文件spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.String[]spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

systemPropertyVariables

将JVM系统属性传递给AOT进程的列表。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

systemPropertyVariablesspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Mapspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

处理测试

AOT引擎可以应用于使用Spring测试上下文框架的JUnit 5测试。 这些测试由AOT引擎处理,然后在原生镜像中执行。spring-doc.cadn.net.cn

就像生产代码一样Spring靴启动父定义了nativeTest该配置文件可用于简化在原生镜像中执行测试所需的步骤。spring-doc.cadn.net.cn

nativeTest配置文件配置如下内容:spring-doc.cadn.net.cn

要从中受益nativeTest配置文件,一个表示应用程序的模块应定义两个插件,如下示例所示:spring-doc.cadn.net.cn

<plugin>
	<groupId>org.graalvm.buildtools</groupId>
	<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

上述内容为每个需要此功能的模块都已就位后,你可以构建多模块项目,并在相关子模块的本地镜像中执行测试,如下示例所示:spring-doc.cadn.net.cn

$ mvn test -PnativeTest
与应用程序AOT处理类似,豆子工厂在构建时已完全准备好。

spring-boot:process-test-aot

org.springframework.boot:spring-boot-maven-plugin:4.0.0spring-doc.cadn.net.cn

测试时调用进攻的引擎。spring-doc.cadn.net.cn

所需参数

名称 类型 默认值

classes目录spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.outputDirectory}spring-doc.cadn.net.cn

生成类spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/classesspring-doc.cadn.net.cn

生成资源spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/test/resourcesspring-doc.cadn.net.cn

生成的来源spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/test/sourcesspring-doc.cadn.net.cn

生成的测试类spring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/test/classesspring-doc.cadn.net.cn

testClassesDirectoryspring-doc.cadn.net.cn

文件spring-doc.cadn.net.cn

${project.build.testOutputDirectory}spring-doc.cadn.net.cn

参数细节

classes目录

包含运行测试的类和资源文件的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

classes目录spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.outputDirectory}spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

编译器参数

这些参数应当提供给AOT编译进程。在命令行中,确保引号之间包裹多个值。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

编译器参数spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.aot.compiler参数spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

exclusionGroupIds

逗号分隔的groupid名称列表,排除(完全匹配)。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

exclusionGroupIdsspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.excludeGroupIdsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

排除

排除的工件定义集合。这排除元素定义了强制性组IDartifactId(遗物ID组件和可选分类元件。当配置为属性时,值应以逗号分隔,并用冒号分隔:groupId:artifactId,groupId:artifactId:分类器spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

排除spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.exclusionsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

生成类

包含生成测试类的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

生成类spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/main/classesspring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

生成资源

包含生成测试资源的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

生成资源spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/test/resourcesspring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

生成的来源

包含生成源的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

生成的来源spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/test/sourcesspring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

生成的测试类

包含生成测试类的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

生成的测试类spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}/spring-aot/test/classesspring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

包括

包含工件定义的集合。这包括元素定义了强制性组IDartifactId(遗物ID组件和可选分类元件。当配置为属性时,值应以逗号分隔,并用冒号分隔:groupId:artifactId,groupId:artifactId:分类器spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

包括spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

Spring靴。包括spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.2.0spring-doc.cadn.net.cn

jvm论证

JVM论证应该与AOT流程相关联。在命令行中,确保引号之间包裹多个值。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

jvm论证spring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.字符串spring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.aot.jvmArgumentsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

systemPropertyVariables

将JVM系统属性传递给AOT进程的列表。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

systemPropertyVariablesspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Mapspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

testClassesDirectory

包含应打包到归档中的类和资源文件的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

testClassesDirectoryspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.testOutputDirectory}spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn