Gradle lấy cài đặt proxy từ đâu
Theo dõi thuộc tính proxy JVM của Gradle, cài đặt thư mục người dùng và môi trường máy khách thay vì giả định daemon luôn bỏ qua biến mới.
Bản dựng Gradle khởi chạy từ IDE có thể dùng cấu hình khác với cùng dự án khởi chạy từ terminal. Trước khi đổ lỗi cho tiến trình proxy cũ, hãy so sánh thư mục người dùng Gradle, JVM và thuộc tính proxy của từng lần chạy.
Gradle ghi lại các thuộc tính proxy của JVM
Với các tuyến HTTP và HTTPS, tệp thuộc tính có thể chứa:
systemProp.http.proxyHost=203.0.113.10
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=203.0.113.10
systemProp.https.proxyPort=8080
systemProp.http.nonProxyHosts=localhost|*.example.internal
Dùng endpoint được cấp; với các tuyến kho công khai được phép, danh sách proxy HTTP cung cấp các cặp máy chủ và cổng ứng viên. Thuộc tính bỏ qua HTTPS cũng là http.nonProxyHosts; tự tạo https.nonProxyHosts không phải cách sửa được ghi lại. Thuộc tính máy chủ chứa địa chỉ, không phải URL proxy đầy đủ.
Xuất HTTP_PROXY trong shell tự nó không chứng minh máy khách JVM này dùng nó làm chính sách proxy. Hãy kiểm tra các thuộc tính mà ứng dụng hỗ trợ.
Daemon thực sự nhận thông tin bản dựng
Tài liệu Gradle hiện tại cho biết máy khách gửi thông tin bản dựng, gồm cả biến môi trường, cho daemon. Vì vậy giải thích chung “daemon không bao giờ nhận biến môi trường mới” là không chính xác.
Một số thuộc tính khởi động JVM, gồm thuộc tính kho tin cậy, không thể thay đổi với JVM đang chạy. Do đó Java home hoặc cấu hình khởi động kho tin cậy thay đổi vẫn có thể quan trọng dù các giá trị môi trường bản dựng thông thường được truyền tiếp.
So sánh hai lần khởi chạy
Kiểm tra bản phân phối Gradle và runtime Java mà IDE chọn. Kiểm tra xem nó có dùng cùng GRADLE_USER_HOME và thuộc tính người dùng như terminal hay không. Một mục proxy trong cấu hình của người dùng này không cho biết ngữ cảnh khác đã tải gì.
Nếu yêu cầu khởi động thay đổi cần daemon khác, hãy dùng các điều khiển daemon được tài liệu hóa cho phiên bản Gradle liên quan. Đừng coi việc dừng daemon là cách thay thế cho tìm thuộc tính sai hoặc tệp cấu hình bị thiếu.
Cuối cùng, xác định yêu cầu bị lỗi. Tải xuống Wrapper, giải quyết phụ thuộc bản dựng và yêu cầu từ tiến trình ứng dụng hoặc kiểm thử tách nhánh không tự động là cùng một ngữ cảnh mạng. Hãy xác minh tiến trình tạo yêu cầu trước khi mong thuộc tính Gradle kiểm soát nó.