リモートホストと通信する簡単な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);
そして、1つの引数のみが出力されました: "-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 Boot 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)
}
}
コマンドラインから提供された引数
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加