构建
本节介绍如何构建 Spring Shell 应用程序。
原生支持
将Spring Shell 应用程序编译成GraalVM 二进制文件的功能主要来自Spring Framework 和Spring Boot,其中该功能称为AOT。提前(Ahead of Time)意味着应用程序上下文在编译时准备就绪,以便为GraalVM 生成做好准备。
基于框架Spring Shell 的AOT 功能构建,它拥有自己的GraalVM 配置,用于提供有关二进制文件中应该存在哪些内容的提示。通常,问题来自尚未包含GraalVM 相关配置或这些配置不完整的第三方库。
需要使用GraalVM Reachability Metadata Repository,它为第三方库提供了一些缺失的提示。此外,您还需要安装GraalVM 并将JAVA_HOME 指向它。 |
对于gradle,添加 graalvm 的原生插件并配置元数据存储库。
plugins {
id 'org.graalvm.buildtools.native' version '0.9.16'
}
graalvmNative {
metadataRepository {
enabled = true
}
}
当使用./gradlew nativeCompile
运行 gradle 构建时,您应该在build/native/nativeCompile
目录下获得二进制文件。
对于maven
,使用spring-boot-starter-parent
作为父级,您将获得native
配置文件,可用于进行编译。您需要配置元数据存储库
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<configuration>
<metadataRepository>
<enabled>true</enabled>
</metadataRepository>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
如果您依赖于spring-boot-starter-parent ,它会管理native-maven-plugin 版本,该版本会保持最新。 |
当使用./mvnw native:compile -Pnative
运行 maven 构建时,您应该在target
目录下获得二进制文件。
如果一切顺利,可以按原样运行此二进制文件,而不是通过 jvm 执行 boot 应用程序 jar 文件。