Building
此部分介绍如何构建 Spring Shell 应用程序。
Native Support
对于将 Spring Shell 应用程序编译成 GraalVM 二进制文件,支持主要是来自于 Spring Framework 和 Spring Boot,其中功能被称为 AOT。即时编译是指在编译时准备应用程序上下文以准备好进行 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 时,你应该会在 build/native/nativeCompile
目录下获取二进制文件。
对于 maven
,使用 spring-boot-starter-parent
作为其父,你将获取 `native`profile,可用于编译。你需要配置元数据存储库。
<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>
如果您依赖 |
在使用 ./mvnw native:compile -Pnative
运行 maven build 时,你应该会在 target
目录下获取二进制文件。
如果一切顺利,该二进制文件可以像预期的那样运行,不必通过 jvm 执行 boot 应用程序 jar。