Estoy desarrollando una aplicación web Spring simple que se comunica con un host remoto y me gustaría probarla localmente detrás del proxy corporativo. Utilizo el complemento de gradle "Spring Boot" y la pregunta es ¿cómo puedo especificar la configuración del proxy para JVM?
He probado varias formas de hacerlo:
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"
Pero parece que ninguno de ellos funciona: "NoRouteToHostException" incluye código de "red". Además, he agregado un código adicional para depurar los argumentos de inicio de JVM:
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
for (String arg: arguments) System.out.println(arg);
Y solo se imprimió un argumento: "-Dfile.encoding = UTF-8".
Si configuro la propiedad del sistema en el código:
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
¡Todo funciona bien!
fuente
args
propiedad.Esto debería pasar todas las opciones de JVM a la aplicación iniciada a través de
bootRun
.fuente
En el script de compilación de Gradle, defina systemProperties para ejecutar la tarea.
y
gradle run
debería aceptar este valor.O defina una propiedad de nivel de proyecto como se menciona en http://forums.gradle.org/gradle/topics/how_can_i_provide_command_line_args_to_application_started_with_gradle_run
fuente
@marvin, gracias por tu publicación fue muy útil.
Compartiendo cómo lo usé:
Tengo pruebas de JUnit que quería omitir a menos que se usara una propiedad para incluir dichas pruebas. Usando JUnit Assume para incluir las pruebas condicionalmente:
Hacer esto con gradle requería que la propiedad del sistema proporcionada en el momento de ejecutar la compilación de gradle, que se muestra aquí,
de hecho pasó a las pruebas.
Espero que esto ayude a otros a probar este enfoque para ejecutar pruebas de forma condicional.
fuente
El uso de jvmArgs puede causar problemas de inicio de JVM. El uso de args le permite pasar sus argumentos de programa personalizados
fuente
Parece funcionar:
fuente
Me metí en un problema similar, bootRun necesitaba algunos parámetros, pero no me gustaría modificar bootRun porque quiero mantener algo de flexibilidad y ceñirme al comportamiento estándar de bootRun. Mi sugerencia es agregar algunas tareas personalizadas (digamos bootRunDev, bootRunProxy) que amplíen bootRun, como se describe en el siguiente fragmento de código
No tengo un entorno para ejercitar el script, pero utilicé este enfoque para pasar el perfil a Spring usando la propiedad spring.profiles.active. Los créditos deben ir a manos de Karol Kaliński
fuente