Spring Native中Maven构建如何自定义native-image生成可执行文件名
回答
native-maven-plugin是Spring Native构建原生可执行文件依赖的底层插件,提供了专门的配置项支持自定义生成的原生二进制文件名,不需要修改pom中的<artifactId>。注意spring-boot-maven-plugin的<finalName>配置仅对Spring Boot打出的fat jar包生效,不会透传给原生镜像构建流程,修改这个参数无法改变原生可执行文件的名称。
具体配置
新版本插件(GraalVM Native Build Tools 0.9.12及以上)
直接在native-maven-plugin的配置块中添加<outputName>参数,设置的值就是最终生成的原生可执行文件名:
<plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <configuration> <outputName>my-custom-app</outputName> </configuration> </plugin>
如果是使用Spring Boot官方提供的native profile(通过mvn native:compile -Pnative触发构建),直接把上述配置加到pom的plugins节点下即可,Spring Boot父POM已经统一管理插件版本,不需要额外声明版本号。
老版本插件
0.9.12之前的老版本插件没有提供outputName配置项,可以通过传递GraalVM原生构建参数实现同等效果:
<plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <configuration> <buildArgs> <arg>-H:Name=my-custom-app</arg> </buildArgs> </configuration> </plugin>
补充说明
- 上述配置针对本地构建生成、存放在
target目录下的原生可执行文件生效。 - 如果通过
mvn spring-boot:build-image -Pnative构建原生容器镜像,镜像内部的可执行文件命名同样遵循上述配置;如果需要自定义镜像的名称、标签,需要在spring-boot-maven-plugin的<image><name>节点下单独配置。 - 配置完成后执行
mvn clean native:compile,即可在target目录下看到自定义命名的可执行文件。
内容的提问来源于stack exchange,提问作者swissbuechi
相关产品推荐
相关产品推荐

