Tworzę prostą aplikację internetową Spring, która komunikuje się ze zdalnym hostem i chciałbym przetestować ją lokalnie za korporacyjnym proxy. Używam wtyczki Gradle "Spring Boot" i pytanie brzmi: jak mogę określić ustawienia proxy dla JVM?
Wypróbowałem kilka sposobów, aby to zrobić:
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"
Ale wygląda na to, że żaden z nich nie działa - „NoRouteToHostException” wrzuca kod „sieciowy”. Dodałem również dodatkowy kod do debugowania argumentów startowych JVM:
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
for (String arg: arguments) System.out.println(arg);
Został wydrukowany tylko jeden argument: „-Dfile.encoding = UTF-8”.
Jeśli ustawię właściwość systemu w kodzie:
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
Wszystko działa dobrze!
źródło
args
nieruchomości.Powinno to przekazać wszystkie opcje JVM do aplikacji uruchomionej za pośrednictwem
bootRun
.źródło
W skrypcie kompilacji Gradle zdefiniuj właściwości systemowe dla zadania uruchamiania.
i
gradle run
powinien zaakceptować tę wartość.Lub zdefiniuj właściwość na poziomie projektu, jak wspomniano w http://forums.gradle.org/gradle/topics/how_can_i_provide_command_line_args_to_application_started_with_gradle_run
źródło
@marvin, dzięki za twój post, był bardzo pomocny.
Udostępnianie, jak go użyłem:
Mam testy JUnit, które chciałem pominąć, chyba że użyto właściwości do uwzględnienia takich testów. Korzystanie z JUnit Załóżmy, że warunkowe dołączanie testów:
Wykonanie tego z gradle wymagało, aby właściwość systemowa dostarczona w czasie uruchamiania kompilacji gradle, pokazana tutaj,
rzeczywiście został poddany testom.
Mam nadzieję, że pomoże to innym wypróbować to podejście do warunkowego uruchamiania testów.
źródło
Używanie jvmArgs może powodować problemy z uruchamianiem maszyny JVM. Używanie argumentów umożliwia przekazywanie niestandardowych argumentów programu
źródło
Wydaje się, że działa:
źródło
Wpadłem w podobny problem, bootRun potrzebował pewnych parametrów, ale nie chciałbym modyfikować bootRun, ponieważ chcę zachować pewną elastyczność i trzymać się standardowego zachowania bootRun. Moją sugestią jest dodanie niestandardowych zadań (powiedzmy bootRunDev, bootRunProxy), które rozszerzają bootRun, jak opisano w poniższym fragmencie kodu
Nie mam środowiska do ćwiczenia skryptu, ale użyłem tego podejścia, aby przekazać profil do sprężyny za pomocą właściwości spring.profiles.active. Kredyty powinny trafić do Karola Kalińskiego
źródło