【Quarkus】quarkus:dev启动时指定JVM参数
比如我要指定如下jvm启动参数,在idea中要如何配置呢?
-Xmx70m -Xms10m -Djava.net.useSystemProxies=true -XX:NativeMemoryTracking=detail
答案:
参考来源: Quarkus - how to provide java params to running app from maven runner?
- 第一种方法
启动的时候指定jvm参数
mvn quarkus:dev -Djvm.args="-Xmx70m -Xms10m -Djava.net.useSystemProxies=true -XX:NativeMemoryTracking=detail"
如果你是使用IntelliJ IDEA,可以参考以下方式设置启动参数。
Edit Configuration - Runner - VM Optinos
填入以下值:
-Djvm.args="-Xmx70m -Xms10m -Djava.net.useSystemProxies=true -XX:NativeMemoryTracking=detail"
可以看到,使用-Djvm.args传入了jvm参数
- 第二种方法
在maven项目中,编辑pom文件的properties传入
<project ...>
...
<properties>
<jvm.args>-Dquarkus.datasource.url=...</jvm.args>
</properties>
...
</project>
- 第三种方法
在maven项目中,设置quarkus编译插件配置传入
<project ...>
...
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>dev</goal>
</goals>
<phase>...</phase>
</execution>
</executions>
<configuration>
<jvmArgs>-Dquarkus.datasource.url=...</jvmArgs>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
题外话
值得一提的是,同时通过三种方法设置并不会同时生效,而是会相互覆盖,优先级是 3 > 1 > 2。3的优先级最大让我感觉有些反直觉,我个人推荐使用第二种方法设置项目里通用的配置,这样一来,如果有某位开发者想临时变更jvm参数,只需要在他的启动参数设置就可以覆盖通用的配置,而不会出现3这种个人无法覆盖的情况。