Saya memerlukan akses web dari Gradle melalui server proxy untuk menggunakan integrasi Gradle / Artifactory untuk Jenkins. Untuk mengurangi kemungkinan penyebab masalah, saya secara manual menambahkan plugin Artifactory di build.gradle dan menjalankannya dari baris perintah:
apply {
apply from: "http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle"
}
Mengikuti deskripsi ini, saya menentukan yang berikut di .gradle / gradle.properties di direktori home saya:
systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx
Dengan konfigurasi proxy di atas (yang dikenal berfungsi), gagal:
11: 33: 17.699 [GALAT] [org.gradle.BuildExceptionReporter] Disebabkan oleh: java.io.IOException: Server mengembalikan kode respons HTTP: 407 untuk URL: http://gradle.artifactoryonline.com/gradle/plugins/org/ jfrog / buildinfo / build-info-extractor-gradle / 1.0.1 / artifactoryplugin-1.0.1.gradle
Saya memiliki dua server proxy untuk dipilih, dan satu selalu merespons dengan 407
( Diperlukan otentikasi proxy ), yang lain dengan 502
( Bad gateway ), jadi jelas, opsi proxyHost dan proxyPort digunakan.
Karena nama pengguna (berdasarkan pengguna Active Directory) berisi backslash, saya mencoba keduanya \\
dan \
, tetapi tidak berhasil. Pengguna yang ditentukan berbeda dari pengguna yang masuk ke mesin dan Direktori Aktif. Kredensial pengguna ini tidak valid untuk proxy, jadi saya harus dapat menentukan pengguna lain.
Pengaturan opsi yang sama di GUI Jenkins atau Artifactory bekerja.
sumber
Jawaban:
Perbaikan atas tanggapan Daniel:
Konfigurasi Proxy Hanya HTTP
HTTPS Only Proxy configuration
Konfigurasi HTTP dan HTTPS Proxy
Konfigurasi proxy dengan pengguna dan kata sandi
bekerja untuk saya (dengan
gradle.properties
di homedir atau dir proyek, build masih gagal). Terima kasih telah menunjukkan masalah pada gradle yang memberikan solusi ini. Lihat dokumen rujukan di https://docs.gradle.org/current/userguide/build_environment.html#sec:accessing_the_web_via_a_proxyPembaruan Anda juga dapat memasukkan properti ini
gradle-wrapper.properties
(lihat: https://stackoverflow.com/a/50492027/474034 ).sumber
~/.gradle/gradle.properties
pastikan Anda awalan dengan propertisystemProp
, seperti misalnyasystemProp.http.proxyHost=127.0.0.1
-Dhttp.proxyHost
dan sejenisnya) sebagaiJAVA_OPTS
variabel lingkungan untuk membuatnya berfungsi.Ini properti gradle.prop saya, harap dicatat bagian HTTPS itu
sumber
Dalam saya,
build.gradle
saya memiliki tugas berikut, yang menggunakan pengaturan proxy linux yang biasa,HTTP_PROXY
danHTTPS_PROXY
, dari shell env:sumber
Bagi saya, berfungsi menambahkan konfigurasi ini di file gradle.properties proyek, di mana file build.gradle adalah:
Di mana: proxyUrl adalah url dari server proxy ( http: // ..... )
proxyPort adalah port (biasanya 8080)
USER adalah pengguna domain saya
Kata sandi, kata sandi saya
Dalam hal ini, proksi untuk http dan https sama
sumber
Coba yang berikut ini:
gradle -Dhttp.proxyHost=yourProxy -Dhttp.proxyPort=yourPort -Dhttp.proxyUser=usernameProxy -Dhttp.proxyPassword=yourPassoword
sumber
Dengan menggunakan program Java "Request a URL" yang sangat sederhana, saya dapat mereplikasi masalah ini.
http.proxyUser
danhttp.proxyPassword
tampaknya tidak standar, walaupun populer, karena tidak dijelaskan di halaman referensi Java yang ditautkan dari tutorial Gradle ; meskipun manual Gradle menyebutkannya.Tampaknya program Java yang ingin mendukung otentikasi proksi perlu melakukan ini secara manual (dan saya dapat melakukan ini menggunakan kode pada halaman yang ditautkan).
Saya mengirimkan masalah ini (dan perbaikan) ke pelacak masalah Gradle . Masalah yang diangkat GRADLE-1556 diselesaikan pada 1.0-milestone-8 (Feb 2012)
sumber
Lihat di c: \ Users \ your username \ .gradle \ gradle.properties:
sumber
Buat file yang disebut
gradle.properties
di dalam folder proyek di manabuild.gradle
file itu ada. Tambahkan entri berikutJika Anda menggunakan DNS untuk proxy, tambahkan seperti itu
systemProp.https.proxyHost=www.proxysite.com
Untuk IP cukup tentukan IP tanpa
http://
atauhttps://
Periksa dokumen resmi gradle untuk lebih jelasnya dan mengatur proxy di tingkat global
sumber
Ada 2 cara untuk menggunakan Gradle di belakang proxy:
Tambahkan argumen di baris perintah
(Dari pos Guillaume Berche)
Tambahkan argumen ini dalam perintah gradle Anda:
atau argumen ini jika Anda menggunakan https:
Tambahkan baris dalam file konfigurasi gradle
di
gradle.properties
tambahkan baris berikut:(untuk
gradle.properties
lokasi file, silakan merujuk ke dokumentasi resmi https://docs.gradle.org/current/userguide/build_environment.htmlEDIT: seperti yang dikatakan oleh @ Joost: Sebuah detail kecil tapi penting yang awalnya saya abaikan: perhatikan bahwa nama host sebenarnya TIDAK mengandung
http://
bagian protokol dari URL ...sumber
http://
bagian protokol dari URL ...Berdasarkan respons SourceSimian; ini bekerja pada akun pengguna domain Windows. Perhatikan bahwa Nama Pengguna tidak termasuk domain,
sumber
Dalam kasus saya, saya mencoba mengatur proxy dari studio android Appearance & Behavior => System Settings => HTTP Proxy. Tetapi proxy tidak berhasil jadi saya klik no proxy.
Jadi saya menghapus semua properti yang dimulai dengan systemProp misalnya - systemProp.http.nonProxyHosts = *. Local, localhost
sumber
~/.gradle/gradle.properties
. Terima kasih telah menunjukkannya.Pembaruan untuk @sourcesimian dan @ kunal-b's yang secara dinamis menetapkan nama pengguna dan kata sandi jika dikonfigurasi dalam properti sistem.
Berikut ini menetapkan nama pengguna dan kata sandi jika disediakan atau hanya menambahkan host dan porta jika tidak ada nama pengguna dan kata sandi yang ditetapkan.
sumber
Jika Anda berada di belakang proksi dan menggunakan gerhana, buka
Window Menu --> Preferences --> General --> Network Connections
. Pilih Penyedia Aktif sebagai 'Manual'.Di bawah Bagian entri proxy, klik HTTPS, klik Edit dan tambahkan host proxy & port. Jika nama pengguna dan kata sandi diperlukan, berikan juga. Itu berhasil untuk saya!
sumber
Jika masalah ini dengan kesalahan HTTP 407 hanya terjadi pada paket yang dipilih maka masalahnya bukan pada pengaturan proxy dan koneksi internet. Anda bahkan dapat mengekspos PC Anda ke internet melalui NAT dan masih akan menghadapi masalah ini. Biasanya pada saat yang sama Anda dapat mengunduh paket yang diinginkan di browser. Satu-satunya solusi yang saya temukan: hapus folder .gradle di profil Anda (bukan di proyek). Setelah menyinkronkan proyek, itu akan memakan waktu lama tetapi mengembalikan semuanya.
sumber