如何在使用 Quarkus 构建的原生镜像中包含额外资源?
How can I include an additional resource in a native image built with Quarkus?
我有一个包含文件 extra-config.properties
in src/main/resources
的项目,我在我的代码中引用了该文件:
getClass().getClassLoader().getResourceAsStream("extra-config.properties"))
这在 JVM 模式下完美运行,但是当我构建本机映像时无法访问该文件,因为它不包含在二进制文件中。
如何指示 Quarkus 包含它?
构建本机二进制文件时,GraalVM 默认不在映像中包含类路径资源。相反,您需要指定 -H:IncludeResources
,如前所述 here。
在 Quarkus 中执行此操作的方法是配置 quarkus-maven-plugin
插件以添加 additionalBuildArgs
属性。
配置将类似于以下内容:
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.version}</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<configuration>
<additionalBuildArgs>-H:IncludeResources=extra-properties.json</additionalBuildArgs>
</configuration>
</execution>
</executions>
</plugin>
我有一个包含文件 extra-config.properties
in src/main/resources
的项目,我在我的代码中引用了该文件:
getClass().getClassLoader().getResourceAsStream("extra-config.properties"))
这在 JVM 模式下完美运行,但是当我构建本机映像时无法访问该文件,因为它不包含在二进制文件中。
如何指示 Quarkus 包含它?
构建本机二进制文件时,GraalVM 默认不在映像中包含类路径资源。相反,您需要指定 -H:IncludeResources
,如前所述 here。
在 Quarkus 中执行此操作的方法是配置 quarkus-maven-plugin
插件以添加 additionalBuildArgs
属性。
配置将类似于以下内容:
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.version}</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<configuration>
<additionalBuildArgs>-H:IncludeResources=extra-properties.json</additionalBuildArgs>
</configuration>
</execution>
</executions>
</plugin>