我正在开发与远程主机进行通信的简单Spring Web应用程序,我想在公司代理之后在本地对其进行测试。我使用“ Spring Boot”
gradle插件,问题是 如何为JVM指定代理设置?
我尝试了几种方法来做到这一点:
gradle -Dhttp.proxyHost=X.X.X.X -Dhttp.proxyPort=8080 bootRun
export JAVA_OPTS="-Dhttp.proxyHost=X.X.X.X -Dhttp.proxyPort=8080"
export GRADLE_OPTS="-Dhttp.proxyHost=X.X.X.X -Dhttp.proxyPort=8080"
但是似乎它们都不起作用-“ NoRouteToHostException”抛出“网络”代码。另外,我添加了一些额外的代码来调试JVM启动参数:
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
for (String arg: arguments) System.out.println(arg);
并且仅打印一个参数:“-Dfile.encoding = UTF-8”。
如果我在代码中设置系统属性:
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
一切正常!
原始答案(使用Gradle 1.12和Spring Boot 1.0.x):
在bootRun
spring启动gradle这个插件的任务延长了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 Boot 1.2.6.RELEASE 和 Gradle 2.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指定代理设置? 我试过几种方法: 如果在代码中设置系统属性: 一切正常!
我想将一些JVM arg传递给我的Gradle bootRun任务,即。我补充说: 添加到我的文件中,但是当我运行时它不喜欢它:
我正在尝试使用以下命令提交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
问题内容: 为了在步骤之间传递变量,我有步骤方法属于同一类,并使用该类的字段作为传递的信息。 下面是一个示例,如下所示: 带有步骤定义的Java类: 我的问题是在步骤之间共享信息是否是一个好习惯?或者将功能定义为: 问题答案: 为了在步骤之间共享共同点,您需要使用World。在Java中,它没有在Ruby中那么清晰。 引用黄瓜的创建者。 “世界”的目的是双重的: 隔离方案之间的状态。 在场景中的步
我有一些JMH基准测试,我正在尝试分析。我想启用 GC 日志记录以查看生成了多少垃圾,但我不知道如何传递 JVM 参数。我知道JMH在分叉的JVM中运行基准测试,所以对我来说如何做到这一点并不是很明显。我正在使用断续器。