Saya sedang mengembangkan aplikasi web Spring sederhana yang berkomunikasi dengan host jarak jauh dan saya ingin mengujinya secara lokal di belakang proxy perusahaan. Saya menggunakan plugin gradle "Spring Boot" dan pertanyaannya adalah bagaimana saya dapat menentukan pengaturan proxy untuk JVM?
Saya telah mencoba beberapa cara untuk melakukannya:
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"
Tapi sepertinya tidak ada yang berfungsi - "NoRouteToHostException" melempar kode "jaringan". Juga, saya telah menambahkan beberapa kode tambahan untuk men-debug argumen awal JVM:
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
for (String arg: arguments) System.out.println(arg);
Dan hanya satu argumen yang dicetak: "-Dfile.encoding = UTF-8".
Jika saya mengatur properti sistem dalam kode:
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
Semuanya bekerja dengan baik!
sumber
args
properti.Ini harus meneruskan semua opsi JVM ke aplikasi yang dimulai melalui
bootRun
.sumber
Dalam skrip build gradle, tentukan systemProperties untuk tugas yang dijalankan.
dan
gradle run
harus menerima nilai ini.Atau tentukan properti tingkat proyek seperti yang disebutkan di http://forums.gradle.org/gradle/topics/how_can_i_provide_command_line_args_to_application_started_with_gradle_run
sumber
@marvin, terima kasih atas kiriman Anda, itu sangat membantu.
Berbagi bagaimana saya menggunakannya:
Saya memiliki tes JUnit yang ingin saya lewati kecuali ada properti yang digunakan untuk memasukkan tes tersebut. Menggunakan JUnit Assume untuk menyertakan pengujian secara kondisional:
Melakukan ini dengan gradle mengharuskan properti sistem yang disediakan pada saat menjalankan build gradle, yang ditampilkan di sini,
memang lolos ke ujian.
Semoga ini bisa membantu orang lain mencoba pendekatan ini untuk menjalankan pengujian secara bersyarat.
sumber
Menggunakan jvmArgs dapat menyebabkan masalah mulai JVM. Menggunakan args memungkinkan Anda meneruskan argumen program kustom Anda
sumber
Sepertinya berhasil:
sumber
Saya mengalami masalah yang sama, bootRun membutuhkan beberapa parameter tetapi saya tidak ingin memodifikasi bootRun karena saya ingin menjaga fleksibilitas dan tetap berpegang pada perilaku bootRun standar. Saran saya adalah menambahkan beberapa tugas khusus (katakanlah bootRunDev, bootRunProxy) yang memperluas bootRun, seperti yang dijelaskan dalam cuplikan kode berikut
Saya tidak memiliki lingkungan untuk menjalankan skrip tetapi saya menggunakan pendekatan ini untuk meneruskan profil ke musim semi menggunakan properti spring.profiles.active. Kredit harus diberikan ke Karol Kaliński
sumber