我正在使用多阶段Docker构建构建Quarkus本机可执行文件,如Quarkus-构建本机可执行文件中所述
我的项目只包含了Hello World
——示例,其中添加了一些ORM功能(因此没有太多依赖项)。构建工作正常,但我的问题是,它在构建期间会消耗大量内存。这意味着最高可达6Gib。在我看来,构建时间也很长(总共约4-6分钟)。
当我在构建我们的CI/CD基础设施时,问题就开始了。我们没有那么多内存,因此生成失败,出现错误:映像生成请求失败,退出状态为137
。
是我做错了什么,还是这只是正常的行为?是否有可能至少减少内存消耗?
现在,您可以限制Quarkus的内存使用:
在src/main/resources/application中。属性文件,只需设置:
quarkus.native.native-image-xmx=2G
或者将此选项传递给maven:
mvn package -Dnative -Dquarkus.native.native-image-xmx=2G
@ben的回答是正确的,但也许更精确一些是有用的。你必须编辑pom。xml
在入门
目录中,编辑本机
配置文件并添加
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.version}</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
<configuration>
<enableHttpUrlHandler>true</enableHttpUrlHandler>
<additionalBuildArgs>-J-Xmx2G</additionalBuildArgs>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
...
</plugin>
</plugins>
</build>
</profile>
感谢肯和卢卡·布尔加佐利!所以,GraalVM使用
人们可以通过指定-J-Xmx2G
作为addtionalBuildArgs
-参数来限制内存消耗为Quarkus-maven-plugin
。但这可能会增加构建时间。
我已经使用quarkus maven插件创建了一个quarkus应用程序。 我的maven pom如下: 但是,当我尝试使用 ,我会收到以下错误消息,独立于平台。 我承认我没有创建任何类型的主类,因为quarkus似乎不需要它。但是我如何向Java平台声明我打算让quarkus决定主类呢? 编辑为了回应c. twitter,这里有更多的信息 内容是 我很确定你们中的一些人会要求清单。MF含量 我认
我遵循了构建quarkus本机可执行文件的步骤。 1.引导项目: 2.在minishift中使用docker 3.生成包: 失败,错误跟踪如下: 根据要求,树输出如下所示:
我想使用pyInstaller的单文件夹模式,但我不想每次都收集所有依赖项。 大多数情况下,我可以重用它以前打包的所有依赖项,我只需要可执行文件,我想如果我能在构建过程中尽快停止,我会在构建过程中节省10~20分钟。exe文件已生成。 我知道用-F标志将所有依赖项打包到一个可执行文件中,但这不是我想要的。我只希望pyInstaller在打包步骤之前停止。 我希望生成在可能输出时立即停止:
我尝试使用docker构建一个Quarkus本机可执行文件,使用以下命令““ Quarkus版本:2.2.1.最终Maven版本:3.8.1Java版本:11
构建失败 我跟着https://quarkus.io/guides/building-native-image-guide#creating-a-container. 这两种方法都会产生朴素的图像可执行文件。