当前位置: 首页 > 知识库问答 >
问题:

如何从引导中传递JVM选项

张绍晖
2023-03-14

我正在开发与远程主机通信的简单Spring web应用程序,我想在公司代理后对其进行本地测试。我使用“Spring Boot”gradle插件,问题是如何为JVM指定代理设置?

我试过几种方法:

  1. 分级-dhttp.proxyhost=x.x.x.x-dhttp.proxyport=8080引导
  2. 导出java_opts=“-dhttp.proxyhost=x.x.x.x-dhttp.proxyport=8080”
  3. 导出gradle_opts=“-dhttp.proxyhost=x.x.x.x-dhttp.proxyport=8080”
    RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
    List<String> arguments = runtimeMxBean.getInputArguments();
    for (String arg: arguments) System.out.println(arg);

如果在代码中设置系统属性:

    System.setProperty("http.proxyHost", "X.X.X.X");
    System.setProperty("http.proxyPort", "8080");

一切正常!

共有1个答案

龙俊美
2023-03-14

原始答案(使用Gradle 1.12和Spring Boot 1.0.x):

Spring Boot gradle插件的bootrun任务扩展了gradle JavaExec任务。看看这个。

这意味着您可以通过添加以下内容来配置插件以使用代理:

bootRun {
   jvmArgs = "-Dhttp.proxyHost=xxxxxx", "-Dhttp.proxyPort=xxxxxx"
}

当然,您可以使用systemproperties来代替jvmargs

如果要从命令行有条件地添加jvmArgs,可以执行以下操作:

bootRun {
    if ( project.hasProperty('jvmArgs') ) {
        jvmArgs project.jvmArgs.split('\\s+')
    }
}

gradle bootRun -PjvmArgs="-Dwhatever1=value1 -Dwhatever2=value2"

更新的答案:

在使用Spring Boot1.2.6.Release和Gradle2.7试用了上面的解决方案之后,我发现它并不像一些评论中提到的那样起作用。不过,可以做几个小调整来恢复工作状态。

新的代码是:

bootRun {
   jvmArgs = ["-Dhttp.proxyHost=xxxxxx", "-Dhttp.proxyPort=xxxxxx"]
}

对于硬编码参数,以及

bootRun {
    if ( project.hasProperty('jvmArgs') ) {
        jvmArgs = (project.jvmArgs.split("\\s+") as List)

    }
}
 类似资料:
  • 问题内容: 我正在开发与远程主机进行通信的简单Spring Web应用程序,我想在公司代理之后在本地对其进行测试。我使用“ Spring Boot” gradle插件,问题是 如何为JVM指定代理设置? 我尝试了几种方法来做到这一点: 但是似乎它们都不起作用-“ NoRouteToHostException”抛出“网络”代码。另外,我添加了一些额外的代码来调试JVM启动参数: 并且仅打印一个参数:

  • 问题内容: 我的HTML代码的摘录。 单击链接时蜂鸣器打开的模态: 是否有正确的方法将我的ID传递给模式? 问题答案: 传递,从数据库获取记录以进行传递并以模式显示的简单解决方案是; 简单的解决方案 模态通话按钮 模态HTML 将以下模式HTML放在上述调用按钮所在的页面内(最好在页面底部) 现在创建一个PHP文件并命名 通过模式调用按钮调用该文件 要删除模式中的数据或换句话说在打开下一个记录而不

  • 我正在尝试使用以下命令提交flink关于纱线的作业: 我拿到了env。Java语言选择flink客户端日志,但当应用程序提交到Thread时,这些Java选项将不可用。由于额外的JVM选项不可用,应用程序在连接zookeeper时引发异常。 请建议如何将动态属性传递给JM 注意:我试图设置env。Java语言将选项选择到conf/flink-conf.yaml及其工作状态。我需要一种通过flink

  • 根据文档,sbt 分叉进程应接收当前进程的 jvm 设置: 默认情况下,分叉的进程使用与当前进程的构建、工作目录和JVM选项相同的Java和Scala版本。参见:http://www.scala-sbt.org/0.13/docs/Forking.html 然而,对我来说似乎不是这样。参加以下测试: 如果我使用sbt-Dconfig.resource=test来运行它。然后打印“conf:test

  • 我有一个页面显示了当地咖啡馆的列表。当用户单击某个咖啡馆时,将显示一个模式对话框,其中已预先填充了“咖啡馆名称”。该页面包含许多咖啡馆名称,表单应包含他单击的“咖啡馆名称”。 以下是通过链接按钮生成的文本咖啡馆名称列表 这是情态形式 问题是如何将实际值传递到模态形式的“值”属性中? 表单“显示”事件由“onlick”事件触发

  • 问题内容: 我是一个完整的Java新手。我知道Java将所有参数都视为按值传递,并且还有其他几个线程可以解释这一点。 例如,在C ++中,我可以执行以下操作: 哪个将输出3。我知道在Java中,所有参数都是按值传递的,因此您无法操纵传入的参数。在Java中,有没有一种标准的方法来 模拟 按引用传递?有没有办法调用操作传入变量的函数?对于我来说,很难绕开没有办法做到这一点的想法。 问题答案: 模拟传