গ্রেডল প্রক্সি কনফিগারেশন


160

জেনকিন্সের জন্য গ্রেডল / আর্টিফ্যাক্টরি ইন্টিগ্রেশন ব্যবহার করতে আমার একটি প্রক্সি সার্ভারের মাধ্যমে গ্রেডল থেকে ওয়েব অ্যাক্সেস দরকার। সমস্যার সম্ভাব্য কারণগুলি হ্রাস করতে, আমি ম্যানুয়ালি বিল্ড.gradle এ আর্টফ্যাক্টরি প্লাগইন যুক্ত করে কমান্ড লাইন থেকে চালাচ্ছি:

apply {
    apply from: "http://gradle.artifactoryonline.com/gradle/plugins/org/jfrog/buildinfo/build-info-extractor-gradle/1.0.1/artifactoryplugin-1.0.1.gradle"
}

এই বিবরণটি অনুসরণ করে আমি আমার হোম ডিরেক্টরিতে .gradle / গ্রেডলে.প্রোপার্টিগুলিতে নিম্নলিখিতটি নির্দিষ্ট করেছি:

systemProp.http.proxyHost=hostname
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=de\\username
systemProp.http.proxyPassword=xxx

উপরের প্রক্সি কনফিগারেশনের সাথে (এটি অন্যথায় কাজ করা হিসাবে পরিচিত), এটি ব্যর্থ হয়:

11: 33: 17.699 [ERROR] [org.gradle.BuildExceptionReporter] এর কারণ: java.io.IOException: সার্ভারটি HTTP প্রতিক্রিয়া কোড দিয়েছে: ইউআরএলের জন্য 407: http://gradle.artiftoryonline.com/gradle/plugins/org/ jfrog / buildinfo / buildinfo-নিষ্কর্ষক-gradle / 1.0.1 / artifactoryplugin-1.0.1.gradle

আমার মধ্যে দুটি প্রক্সি সার্ভার রয়েছে যা বেছে নিতে পারে এবং একটি সর্বদা 407( প্রক্সি প্রমাণীকরণ প্রয়োজন ) এর সাথে সাড়া দেয় , অন্যটি 502( ব্যাড গেটওয়ে ) সহ, তাই স্পষ্টতই, প্রক্সিহোস্ট এবং প্রক্সিপোর্ট বিকল্পগুলি ব্যবহৃত হয়।

ব্যবহারকারী নাম (একটি সক্রিয় ডিরেক্টরি ব্যবহারকারী উপর ভিত্তি করে) একটি ব্যাকস্ল্যাশ রয়েছে হিসেবে আমি উভয় চেষ্টা \\এবং \, কিন্তু তন্ন তন্ন কাজ করেন। নির্দিষ্ট করা ব্যবহারকারী মেশিনে এবং অ্যাক্টিভ ডিরেক্টরিতে লগ ইন করা ব্যবহারকারী থেকে আলাদা। এই ব্যবহারকারীর শংসাপত্রগুলি প্রক্সিটির জন্য বৈধ নয়, সুতরাং আমার আলাদা ব্যবহারকারী নির্দিষ্ট করতে সক্ষম হওয়া দরকার।

জেনকিনস বা আর্টফিট্রির জিইউআইতে একই বিকল্পগুলি সেট করা কাজ করেছিল।


1
একই সমস্যা রয়েছে, এখানে উত্তরগুলির কোনওটিই সহায়তা করেনি (এমনকি অবচয় / অ-অবচিত পদ্ধতি অনুসরণকারীরাও)। তারপর আমি বুঝতে পারলাম HTTPS প্রক্সি হবে : নির্ধারণ করা stackoverflow.com/a/27686730/1024839
hkoosha

: আপনি এই URL, সম্পূর্ণ তাকান এবং আপডেট (সঙ্গে HTTP এবং HTTPS) উচিত docs.gradle.org/current/userguide/...
Guillaume, Husta

@ গুইলাউম হুস্টা ধন্যবাদ, তবে দয়া করে নোট করুন যে এই প্রশ্নটি 5 বছরেরও বেশি আগে পোস্ট করা হয়েছিল যখন গ্রেডল 0.8 সর্বশেষ প্রকাশ হয়েছিল এবং এ সম্পর্কিত ডকুমেন্টেশনটি কেবল সাধারণ ভুল ছিল (এই প্রশ্নের নিজের প্রতিক্রিয়া দেখুন)।
ড্যানিয়েল বেক


ডেডলিঙ্ক: গ্রেড.আর.এল / রিলিজস
পর্যবেক্ষক

উত্তর:


211

ড্যানিয়েলের প্রতিক্রিয়া সম্পর্কে পরিমার্জন:

এইচটিটিপি কেবলমাত্র প্রক্সি কনফিগারেশন

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

এইচটিটিপিএস কেবলমাত্র প্রক্সি কনফিগারেশন

gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

এইচটিটিপি এবং এইচটিটিপিএস উভয়ই প্রক্সি কনফিগারেশন

gradlew -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=3129 "-Dhttp.nonProxyHosts=*.nonproxyrepos.com|localhost"

ব্যবহারকারী এবং পাসওয়ার্ড সহ প্রক্সি কনফিগারেশন

গ্রেডলিউ -ডিটিএইচটিপি.প্রক্সিহোস্ট = 127.0.0.1 -ধাপ্পস.প্রক্সিপোর্ট = 3128 - ধৃত্পস.প্রক্সিহোস্ট = 127.0.0.1 -ডাহটপস.প্রক্সিপোর্ট = 3129 -ডাহটিপস.প্রক্সিউজার = ব্যবহারকারী -ডিটিএইচটিপিএস। প্রক্সিপ্যাসওয়ার্ড = পাস -Dhttp.nonProxyHosts = host1.com | হোস্ট 2.com

আমার জন্য কাজ করেছেন ( gradle.propertiesহোমডির বা প্রজেক্টের ডির সাথে, বিল্ডটি এখনও ব্যর্থ হয়েছিল)। গ্রেডে এই সমস্যাটি নির্দেশ করার জন্য ধন্যবাদ যা এই কার্যটি বাড়িয়ে দিয়েছে। রেফারেন্স ডকটি https://docs.gradle.org/current/userguide/build_en वातावरण.html#sec: এ্যাক্সেসিং_সে_ ওয়েবে_ভিয়া_এ_প্রক্সিতে দেখুন

আপডেট আপনি এই বৈশিষ্ট্যগুলিতেও রাখতে পারেন gradle-wrapper.properties(দেখুন: https://stackoverflow.com/a/50492027/474034 )।


4
সিএনটিএলএম ব্যবহার করার সময় আমাকেও সহায়তা করেছিল
Łukasz

5
তুমি কীভাবে প্রক্সি সরিয়ে ফেলবে?
জোনাথন

2
এছাড়াও -Dhttps.proxyUser = ব্যবহারকারী -Dhttps.proxyPassword = পাস
ওভেন বি

10
আপনি যদি বৈশিষ্ট্যগুলি স্থাপন করেন ~/.gradle/gradle.propertiesতা নিশ্চিত করে আপনি বৈশিষ্ট্যগুলির সাথে উপসর্গ স্থাপন করেন systemPropযেমন উদাহরণস্বরূপsystemProp.http.proxyHost=127.0.0.1
স্টেফান হাবরল

1
আমি এটি চেষ্টা করেছিলাম এবং আমার পক্ষে কাজ করি নি। এটিকে কার্যকর করার জন্য আমাকে বিকল্পগুলি ( -Dhttp.proxyHostএবং পছন্দগুলি) JAVA_OPTSপরিবেশ পরিবর্তনশীল হিসাবে সেট করতে হয়েছিল।
গোল্ডেনডি

66

এটি আমার গ্রেডল p প্রপার্টি, দয়া করে এইচটিটিপিএস অংশটি নোট করুন

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=8118
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=8118

55

আমার মধ্যে আমার build.gradleনীচের কাজটি রয়েছে, যা সাধারণ লিনাক্স প্রক্সি সেটিংস ব্যবহার করে HTTP_PROXYএবং HTTPS_PROXYশেল এনভির থেকে:

task setHttpProxyFromEnv {
    def map = ['HTTP_PROXY': 'http', 'HTTPS_PROXY': 'https']
    for (e in System.getenv()) {
        def key = e.key.toUpperCase()
        if (key in map) {
            def base = map[key]
            def url = e.value.toURL()
            println " - systemProp.${base}.proxy=${url.host}:${url.port}"
            System.setProperty("${base}.proxyHost", url.host.toString())
            System.setProperty("${base}.proxyPort", url.port.toString())
        }
    }
}

build.dependsOn setHttpProxyFromEnv

2
এটা মজার! এটি কি আপনার মূলের বিল্ড।
মিয়াও 1007

1
উইন্ডোজ on তেও কাজ করে! এটি গ্রহণযোগ্য উত্তর হওয়া উচিত!

1
ধন্যবাদ! উপরেরগুলি কনফিগারেশনের জন্য কাজ করেছে যার প্রক্সি পাসওয়ার্ডের প্রয়োজন নেই। আমি এটিকে কাজ করতে বা ডাব্লু / ও প্রক্সি পাসওয়ার্ডটি নীচে দেখুন
নর্বার্ট

যদি (মানচিত্রের মূল কী। কীসেট ()) {
JustAnotherCoder

সর্বোত্তম উত্তর. আশা করি জাভা বাস্তুসংস্থানটি বক্সের বাইরে
এমনভাবে কাজ করেছিল

26

আমার জন্য, প্রকল্পের গ্রেড.প্রোপার্টি ফাইলগুলিতে এই কনফিগারেশনটি যুক্ত করার কাজ করে, যেখানে বিল্ড.gradle ফাইলটি রয়েছে:

systemProp.http.proxyHost=proxyURL
systemProp.http.proxyPort=proxyPort
systemProp.http.proxyUser=USER
systemProp.http.proxyPassword=PASSWORD
systemProp.https.proxyHost=proxyUrl 
systemProp.https.proxyPort=proxyPort
systemProp.https.proxyUser=USER
systemProp.https.proxyPassword=PASSWORD

যেখানে: প্রক্সিআরএল হ'ল প্রক্সি সার্ভারের url ( HTTP: // ....। )

প্রক্সিপোর্ট বন্দর (সাধারণত 8080)

ব্যবহারকারী আমার ডোমেন ব্যবহারকারী

পাসওয়ার্ড, আমার পাসওয়ার্ড

এই ক্ষেত্রে, HTTP এবং https এর প্রক্সি একই


23

নিম্নলিখিত চেষ্টা করুন:

gradle -Dhttp.proxyHost=yourProxy -Dhttp.proxyPort=yourPort -Dhttp.proxyUser=usernameProxy -Dhttp.proxyPassword=yourPassoword


2
এই প্রশ্নটি কখন জিজ্ঞাসা করা হয়েছিল তা বিবেচনা করুন। আমার উত্তরে আমি যে ইস্যুটির সাথে লিঙ্ক করব তা গ্রেডল 1.0-মাইলস্টোন -8…
ড্যানিয়েল বেক

2
@ ড্যানিয়েল এই প্রশ্নটি প্রথম পপ আপ হয়েছিল, যখন আমি "গ্রেডল প্রক্সি" অনুসন্ধান করেছি, আমি উত্তরগুলি
এড়িয়েছি এবং সেটাই

22

জাভা প্রোগ্রামটি খুব সাধারণ একটি "ইউআরএল অনুরোধ করুন" ব্যবহার করে আমি সমস্যাটির প্রতিলিপি করতে সক্ষম হয়েছি।

http.proxyUserএবং গ্রেড টিউটোরিয়াল থেকে লিঙ্ক করা জাভা রেফারেন্স পৃষ্ঠাতেhttp.proxyPassword বর্ণিত না হওয়ায় এটি জনপ্রিয়, জনপ্রিয়, বিকল্পগুলি হিসাবে মানহীন বলে মনে হচ্ছে ; যদিও গ্রেডল ম্যানুয়াল তাদের উল্লেখ করেছে।

মনে হচ্ছে জাভা প্রোগ্রামগুলি যে প্রক্সি প্রমাণীকরণের সমর্থন করতে চায় তাদের এই ম্যানুয়ালি করা দরকার (এবং আমি সংযুক্ত পৃষ্ঠায় কোডটি ব্যবহার করে এটি করতে সক্ষম হয়েছি)।


আমি এই সমস্যাটি (এবং একটি সমাধান) গ্রেডল ইস্যু ট্র্যাকারের কাছে জমা দিয়েছি । উত্থাপিত সমস্যা GRADLE-1556 1.0 মাইলস্টোন -8 (ফেব্রুয়ারী 2012) এ সমাধান করা হয়েছে


লিঙ্কযুক্ত ব্লকটি কেবলমাত্র আমন্ত্রণ হিসাবে আমার জন্য উপস্থিত হয়। এই কর্মক্ষেত্রের কোনও সার্বজনীন উদাহরণ আছে কি?
মাইক ইয়কি

@ ইয়োক গ্র্যাডলে আমি যে ইস্যুটি জমা দিয়েছি তার সংযুক্তিটি দেখুন, এটি অত্যন্ত মিল।
ড্যানিয়েল বেক

19

সি: \ ব্যবহারকারীগণ \ আপনার ব্যবহারকারীর নাম g। গ্রেডেল \ গ্রেডেল p প্রপার্টি

systemProp.http.proxyHost=<proxy host>
systemProp.http.proxyPort=<proxy port>
systemProp.http.proxyUser=<proxy user>
systemProp.http.proxyPassword=<proxy password>
systemProp.http.nonProxyHosts=<csv of exceptions>
systemProp.https.proxyHost=<proxy host>
systemProp.https.proxyPort=<proxy port>
systemProp.https.proxyUser=<proxy user>
systemProp.https.proxyPassword=<proxy password>
systemProp.https.nonProxyHosts=<csv of exceptions seperated by | >

5
@ মুরেফক্সক্রফ্ট এই উত্তরের একটি লিঙ্ক আপনি কোথায় দেখছেন?
ম্যাক্স ভলমার 16

মূলত লোকাল মেশিনের একটি লিঙ্ক এবং একটি ফাইল ডাম্প। উত্তরটি আরও বিশদে বর্ণনা করুন।
মারে ফক্সক্রফ্ট

সুপারর্রর টিএনএক্স, আপনি বুঝতে পারবেন না যে আপনার পোস্টটি আমার জন্য কতটা কার্যকর ছিল তবে তবুও বড় ধন্যবাদ
সেয়েদ আলী রওশন

@ SeedAliRoshan কীভাবে আমরা যুক্তির মাধ্যমে প্রক্সি ব্যবহারকারীর এবং পাসওয়ার্ডটি পাস করতে পারি? আমি গ্লোবাল গ্রেডেল.প্রোপার্টি ফাইল ব্যবহার করতে চাই না।
নালপয়েন্টার

@ নলপয়েন্টার আপনি কি আপনার প্রকল্পের গ্রেডের ভিতরে প্রক্সি সেটিংটি ব্যবহার করার চেষ্টা করেছেন?
সৈয়দ আলী রওশন

12

gradle.propertiesযেখানে build.gradleফাইল উপস্থিত রয়েছে সেখানে প্রকল্প ফোল্ডারের ভিতরে একটি ফাইল তৈরি করুন । নিম্নলিখিত এন্ট্রি যোগ করুন

     systemProp.http.proxyHost=proxy_url
     systemProp.http.proxyPort=proxy_port
     systemProp.http.proxyUser=USER
     systemProp.http.proxyPassword=PWD
     systemProp.https.proxyHost=proxy_url 
     systemProp.https.proxyPort=proxy_port
     systemProp.https.proxyUser=USER
     systemProp.https.proxyPassword=PWD

আপনি যদি প্রক্সিটির জন্য ডিএনএস ব্যবহার করেন তবে এটির মতো যুক্ত করুন systemProp.https.proxyHost=www.proxysite.com

আইপি এর জন্য কেবলমাত্র আইপি নির্দিষ্ট করে আউট করুন http://বা আরও বিশদ বিবরণ এবং বিশ্বস্তরে প্রক্সি স্থাপনের জন্য গ্রেডের অফিসিয়াল ডকhttps://
পরীক্ষা করুন


9

প্রক্সিটির পিছনে গ্রেডল ব্যবহারের জন্য দুটি উপায় রয়েছে:

কমান্ড লাইনে যুক্তি যুক্ত করুন

(গিলিয়াম বারেচের পোস্ট থেকে)

আপনার গ্রেড কমান্ডে এই যুক্তিগুলি যুক্ত করুন:

-Dhttp.proxyHost=your_proxy_http_host -Dhttp.proxyPort=your_proxy_http_port

বা এই যুক্তিগুলি যদি আপনি https ব্যবহার করছেন:

-Dhttps.proxyHost=your_proxy_https_host -Dhttps.proxyPort=your_proxy_https_port

গ্রেড কনফিগারেশন ফাইলে লাইন যুক্ত করুন

মধ্যে gradle.properties নিম্নলিখিত পংক্তিগুলি যোগ করুন:

systemProp.http.proxyHost=your_proxy_http_host
systemProp.http.proxyPort=your_proxy_http_port
systemProp.https.proxyHost=your_proxy_https_host
systemProp.https.proxyPort=your_proxy_https_port

( gradle.propertiesফাইলের অবস্থানের জন্য, দয়া করে অফিসিয়াল ডকুমেন্টেশন দেখুন https://docs.gradle.org/current/userguide/build_en वातावरण. html


সম্পাদনা: @ জুস্টের বক্তব্য অনুসারে: একটি ছোট্ট তবে গুরুত্বপূর্ণ বিশদ যা আমি প্রাথমিকভাবে উপেক্ষা করেছি: লক্ষ্য করুন যে আসল হোস্টের নামটিতে http://URL এর প্রোটোকল অংশ নেই ...


1
একটি ছোট তবে গুরুত্বপূর্ণ বিশদ যা আমি প্রাথমিকভাবে উপেক্ষা করেছি: লক্ষ্য করুন যে আসল হোস্টের http://
জাস্ট

5

সোর্সসিমিয়ার প্রতিক্রিয়ার ভিত্তিতে; এটি উইন্ডোজ ডোমেন ব্যবহারকারীর অ্যাকাউন্টগুলিতে কাজ করে। লক্ষ্য করুন ব্যবহারকারীর নাম নেই ডোমেইন আছে অন্তর্ভুক্ত,

task setHttpProxyFromEnv {
    def map = ['HTTP_PROXY': 'http', 'HTTPS_PROXY': 'https']
    for (e in System.getenv()) {
        def key = e.key.toUpperCase()
        if (key in map) {
            def base = map[key]
            def url = e.value.toURL()
            println " - systemProp.${base}.proxy=${url.host}:${url.port}"
            System.setProperty("${base}.proxyHost", url.host.toString())
            System.setProperty("${base}.proxyPort", url.port.toString())
            System.setProperty("${base}.proxyUser", "Username")
            System.setProperty("${base}.proxyPassword", "Password")
        }
    }
}
build.dependsOn setHttpProxyFromEnv

ধন্যবাদ! নীচে প্রক্সি ব্যবহারকারীর নাম এবং পাসওয়ার্ডগুলি কীভাবে পাবেন সে সম্পর্কে একটি আপডেট রয়েছে
নর্বার্ট

1

@ সোর্সসিমিয়ান এবং @ কুণাল -বি এর উত্তরের একটি আপডেট যা সিস্টেমের বৈশিষ্ট্যগুলিতে কনফিগার করা থাকলে ব্যবহারকারী নাম এবং পাসওয়ার্ডকে গতিশীলভাবে সেট করে।

নিম্নলিখিত সরবরাহ করা থাকলে ব্যবহারকারীর নাম এবং পাসওয়ার্ড সেট করে বা কোনও ব্যবহারকারীর নাম এবং পাসওয়ার্ড সেট না করা হলে হোস্ট এবং পোর্ট যুক্ত করে।

task setHttpProxyFromEnv {
    def map = ['HTTP_PROXY': 'http', 'HTTPS_PROXY': 'https']
    for (e in System.getenv()) {
        def key = e.key.toUpperCase()
        if (key in map) {
            def base = map[key]
            //Get proxyHost,port, username, and password from http system properties 
            // in the format http://username:password@proxyhost:proxyport
            def (val1,val2) = e.value.tokenize( '@' )
            def (val3,val4) = val1.tokenize( '//' )
            def(userName, password) = val4.tokenize(':')
            def url = e.value.toURL()
            //println " - systemProp.${base}.proxy=${url.host}:${url.port}"
            System.setProperty("${base}.proxyHost", url.host.toString())
            System.setProperty("${base}.proxyPort", url.port.toString())
            System.setProperty("${base}.proxyUser", userName.toString())
            System.setProperty("${base}.proxyPassword", password.toString())
        }
    }
}

1

আমার ক্ষেত্রে যদি আমি অ্যান্ড্রয়েড স্টুডিওর উপস্থিতি এবং আচরণ => সিস্টেম সেটিংস => HTTP প্রক্সি থেকে প্রক্সি সেট আপ করার চেষ্টা করি। তবে প্রক্সিটি কার্যকর হয়নি তাই আমি কোনও প্রক্সি ক্লিক করি না।

কোনও প্রক্সি পরীক্ষা করা গ্রেড.প্রোপার্টি (গ্লোবাল) থেকে প্রক্সি সেটিংটি সরিয়ে ফেলবে না। আপনাকে এটি ম্যানুয়ালি অপসারণ করতে হবে।

সুতরাং আমি সিস্টেমপ্রপ দিয়ে শুরু হওয়া সমস্ত সম্পত্তি মুছে ফেললাম উদাহরণস্বরূপ - systemProp.http.nonProxyHosts = * স্থানীয়, লোকালহোস্ট


আমি এক ঘন্টার জন্য আমার চুলগুলি ছিঁড়ে ফেলছি, স্পষ্টত ম্যাকের উপর, এই বৈশিষ্ট্যগুলি আমার সাথে স্বয়ংক্রিয়ভাবে যুক্ত হয়েছিল ~/.gradle/gradle.properties। এটা ইশারা জন্য ধন্যবাদ।
এপিকপান্ডাফোরস

0

আপনি যদি প্রক্সিটির পিছনে থাকেন এবং গ্রহনটি ব্যবহার করেন তবে যান Window Menu --> Preferences --> General --> Network Connections। অ্যাক্টিভ সরবরাহকারীদের 'ম্যানুয়াল' হিসাবে নির্বাচন করুন Select

প্রক্সি এন্ট্রি বিভাগের অধীনে, HTTPS এ ক্লিক করুন, সম্পাদনা ক্লিক করুন এবং প্রক্সি হোস্ট এবং পোর্ট যুক্ত করুন। যদি ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন হয় তবে তাও দিন। এটা আমার জন্য কাজ!


0

যদি এইচটিটিপি ত্রুটি 407 সহ এই সমস্যাটি কেবলমাত্র নির্বাচিত প্যাকেজগুলির ক্ষেত্রে ঘটে থাকে তবে সমস্যা প্রক্সি সেটিংস এবং ইন্টারনেট সংযোগে নয়। এমনকি আপনি NAT এর মাধ্যমে আপনার পিসি ইন্টারনেটে প্রকাশ করতে পারেন এবং এখনও এই সমস্যার মুখোমুখি হবেন। সাধারণত একই সময়ে আপনি ব্রাউজারে পছন্দসই প্যাকেজগুলি ডাউনলোড করতে পারেন। আমি একমাত্র সমাধানটি খুঁজে পাচ্ছি: আপনার প্রোফাইলে .গ্রেডল ফোল্ডারটি মুছুন (প্রকল্পে নয়)। প্রকল্পটি সিঙ্ক করার পরে এটি দীর্ঘ সময় নিতে পারে তবে সবকিছু পুনরুদ্ধার করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.