Я разрабатываю простое веб-приложение Spring, которое взаимодействует с удаленным хостом, и я хотел бы протестировать его локально за корпоративным прокси. Я использую плагин Gradle "Spring Boot", и вопрос в том, как я могу указать настройки прокси для 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");
Все отлично работает!
источник
args
собственности.Это должно передать все параметры JVM приложению, запущенному через
bootRun
.источник
В скрипте сборки gradle определите systemProperties для выполнения задачи.
и
gradle run
должен принять это значение.Или определите свойство уровня проекта, как указано в http://forums.gradle.org/gradle/topics/how_can_i_provide_command_line_args_to_application_started_with_gradle_run
источник
@marvin, спасибо за ваш пост, это было очень полезно.
Рассказывая, как я его использовал:
У меня есть тесты JUnit, которые я хотел бы пропустить, если для включения таких тестов не использовалось свойство. Использование JUnit Assume для условного включения тестов:
Для этого с помощью gradle требовалось, чтобы системное свойство предоставлялось во время выполнения сборки gradle, как показано здесь,
действительно прошел испытания.
Надеюсь, это поможет другим опробовать этот подход для условного выполнения тестов.
источник
Использование jvmArgs может вызвать проблемы с запуском JVM. Использование args позволяет передавать аргументы пользовательской программы
источник
Вроде работает:
источник
У меня возникла аналогичная проблема, bootRun требовал некоторых параметров, но мне не хотелось бы изменять bootRun, поскольку я хочу сохранить некоторую гибкость и придерживаться стандартного поведения bootRun. Я предлагаю добавить несколько пользовательских задач (скажем, bootRunDev, bootRunProxy), расширяющих bootRun, как описано в следующем фрагменте кода.
У меня нет среды для выполнения сценария, но я использовал этот подход для передачи профиля в Spring с помощью свойства spring.profiles.active. Кредиты должны перейти к Каролю Калински
источник