Ich entwickle eine einfache Spring-Webanwendung, die mit dem Remote-Host kommuniziert, und möchte sie lokal hinter dem Unternehmens-Proxy testen. Ich verwende das Gradle-Plugin "Spring Boot" und die Frage ist, wie ich Proxy-Einstellungen für JVM festlegen kann.
Ich habe verschiedene Möglichkeiten ausprobiert:
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"
Aber es scheint, als ob keiner von ihnen funktioniert - "NoRouteToHostException" wirft "Netzwerk" -Code ein. Außerdem habe ich zusätzlichen Code zum Debuggen von JVM-Startargumenten hinzugefügt:
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
for (String arg: arguments) System.out.println(arg);
Und nur ein Argument wurde gedruckt: "-Dfile.encoding = UTF-8".
Wenn ich die Systemeigenschaft im Code festlege:
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
Alles funktioniert gut!
quelle
args
Eigentum.Dadurch sollten alle JVM-Optionen an die App übergeben werden, die über gestartet wurde
bootRun
.quelle
Definieren Sie im Gradle-Build-Skript systemProperties für die Ausführungsaufgabe.
und
gradle run
sollte diesen Wert akzeptieren.Oder definieren Sie eine Eigenschaft auf Projektebene, wie unter http://forums.gradle.org/gradle/topics/how_can_i_provide_command_line_args_to_application_started_with_gradle_run beschrieben
quelle
@marvin, danke für deinen Beitrag, es war sehr hilfreich.
Teilen, wie ich es benutzt habe:
Ich habe JUnit-Tests, die ich überspringen wollte, es sei denn, eine Eigenschaft wurde verwendet, um solche Tests einzuschließen. Verwenden von JUnit Nehmen Sie an, dass Sie die Tests unter bestimmten Bedingungen einschließen:
Um dies mit gradle zu tun, muss die hier gezeigte Systemeigenschaft zum Zeitpunkt der Ausführung von gradle build vorhanden sein.
wurde in der Tat zu den Tests durchgereicht.
Ich hoffe, dies hilft anderen, diesen Ansatz für die bedingte Ausführung von Tests auszuprobieren.
quelle
Die Verwendung von jvmArgs kann zu Problemen beim Start von JVM führen. Mit args können Sie Ihre benutzerdefinierten Programmargumente übergeben
quelle
Es scheint zu funktionieren:
quelle
Ich hatte ein ähnliches Problem: bootRun benötigte einige Parameter, aber ich würde keine Lust haben, bootRun zu ändern, da ich etwas Flexibilität behalten und mich an das Standardverhalten von bootRun halten möchte. Mein Vorschlag ist, einige benutzerdefinierte Aufgaben (z. B. bootRunDev, bootRunProxy) hinzuzufügen, die bootRun erweitern, wie im folgenden Codeausschnitt beschrieben
Ich habe keine Umgebung, um das Skript auszuführen, aber ich habe diesen Ansatz verwendet, um das Profil mit der Eigenschaft spring.profiles.active an spring zu übergeben. Credits sollten an Karol Kaliński gehen
quelle