Je développe une application Web Spring simple qui communique avec un hôte distant et j'aimerais la tester localement derrière un proxy d'entreprise. J'utilise le plugin gradle "Spring Boot" et la question est de savoir comment spécifier les paramètres de proxy pour JVM?
J'ai essayé plusieurs façons de le faire:
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"
Mais il semble qu'aucun d'eux ne fonctionne - "NoRouteToHostException" jette du code "réseau". De plus, j'ai ajouté du code supplémentaire pour déboguer les arguments de démarrage JVM:
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
for (String arg: arguments) System.out.println(arg);
Et un seul argument a été affiché: "-Dfile.encoding = UTF-8".
Si je définis la propriété système dans le code:
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
Tout fonctionne très bien!
la source
args
propriété.Cela devrait transmettre toutes les options JVM à l'application démarrée via
bootRun
.la source
Dans le script de construction gradle, définissez systemProperties pour la tâche d'exécution.
et
gradle run
devrait accepter cette valeur.Ou définissez une propriété au niveau du projet comme mentionné dans http://forums.gradle.org/gradle/topics/how_can_i_provide_command_line_args_to_application_started_with_gradle_run
la source
@marvin, merci pour votre message, il a été très utile.
Partageant comment je l'ai utilisé:
J'ai des tests JUnit que je voulais ignorer à moins qu'une propriété ne soit utilisée pour inclure de tels tests. Utilisation de JUnit Assume pour inclure les tests de manière conditionnelle:
Pour ce faire avec gradle, il fallait que la propriété système fournie au moment de l'exécution de la génération de gradle, illustrée ici,
a bien été passé aux tests.
J'espère que cela aidera les autres à essayer cette approche pour exécuter des tests de manière conditionnelle.
la source
L'utilisation de jvmArgs peut entraîner des problèmes de démarrage de la JVM. L'utilisation d'arguments vous permet de transmettre vos arguments de programme personnalisés
la source
Cela semble fonctionner:
la source
J'ai eu un problème similaire, bootRun avait besoin de certains paramètres mais je n'aurais pas envie de modifier bootRun car je veux garder une certaine flexibilité et m'en tenir au comportement standard de bootRun. Ma suggestion est d'ajouter des tâches personnalisées (disons bootRunDev, bootRunProxy) qui étend bootRun, comme décrit dans l'extrait de code suivant
Je n'ai pas d'environnement pour exercer le script mais j'ai utilisé cette approche pour passer le profil au ressort en utilisant la propriété spring.profiles.active. Les crédits doivent aller à Karol Kaliński
la source