为了简化原生图像的生成,Native Image 现在使用 Native Image Maven 插件在 Maven 中工作。
您可以使用该命令直接使用 Maven 构建本机可执行文件,而无需将该命令作为单独的步骤运行。但是,使用该插件的 Maven 项目应构建在包含该工具的 JDK 上。GraalVM 就是这样一个 JDK(如果之前已经安装了 )。
接下来,添加到文件部分:
org.graalvm.nativeimage native-image-maven-plugin ${graalvm.version} native-image package false example --no-fallback
最后,在列表中添加库依赖项:org.graalvm.sdk
org.graalvm.sdk graal-sdk ${graalvm.version} provided
该插件确定了它需要将哪些JAR文件传递给本机映像以及可执行主类应该是什么。如果试探法失败并出现错误,则应在插件的节点中指定主类。完成后,将在项目的目标目录中生成可执行文件以供使用。
Maven 插件自定义如果使用 Native Image Maven 插件,它将获取存储在 META-INF/native-image/资源位置下的应用程序的所有配置,如 Native Image Build Configuration 中所述。也可以在节点内自定义插件。以下配置可用。
- 配置参数 :如果执行失败并显示错误,则应指定主类。默认情况下,插件按以下顺序查询文件中的多个位置,以确定图像的主类应是什么:
#1#2 #3
- 配置参数 :如果未显式设置图像文件名,请使用参数为图像提供自定义文件名。
exeFileName - 配置参数 :如果要将 其他选项传递给本机映像生成器,请在插件的定义中使用该参数。例如,要构建启用了断言的本机映像,该断言使用 com.test.classname 作为主类,请添加:
executable-name com.test.classname --no-fallback false
如果您使用GraalVM Enterprise作为环境,则该插件将构建一个启用了企业功能的本机映像,例如,将自动构建一个可执行文件,并启用压缩引用和其他优化。
重用父 POM 中的配置该元素可以在父 POM 和子 POM 之间组合。假设以下父 POM 定义:
org.graalvm.nativeimage native-image-maven-plugin ${graalvm.version} ${project.artifactId} ${exec.mainClass} --no-fallback
子项目能够通过以下方式追加s :
org.graalvm.nativeimage native-image-maven-plugin --verbose
在这种情况下,将传递给可执行文件的参数将是:native-image
--no-fallback --verbose
引用自[Oracle GraalVM Enterprise Edition 20 Guide]



