如何在使用 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>