গ্রেডল কনফিগারেশন (অর্থাত্ শংসাপত্রগুলি) কোথায় রাখবেন যা প্রতিশ্রুতিবদ্ধ হবে না?


155

আমি একটি মাভেন রেপোতে গ্রেডল-বিল্ট আর্টিক্ট স্থাপন করার চেষ্টা করছি এবং এর জন্য আমার শংসাপত্রগুলি উল্লেখ করা দরকার। এটি আপাতত ভাল কাজ করে:

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://.../nexus/content/repositories/snapshots/") {
                authentication(userName: "admin", password: "admin123")
            }
        }
    }
}

তবে আমি উত্স নিয়ন্ত্রণে শংসাপত্রগুলি সংরক্ষণ করতে পছন্দ করি না। মাভেনের সাহায্যে আমি একটি সার্ভার কনফিগারেশন সংজ্ঞায়িত করব এবং আমার মধ্যে শংসাপত্রগুলি সরবরাহ করব ~/.m2/settings.xml। গ্র্যাডলের সাথে কীভাবে অনুরূপ কিছু করব?


3
আপনি জানেন যে এডমিন 123 কে পাসওয়ার্ড হিসাবে ব্যবহার করা কোনও সুরক্ষা দৃষ্টিকোণ থেকে খারাপ, ডান;)
জাওয়াতকিনস

উত্তর:


228

~ / .গ্র্যাডেল / গ্রেডেল.প্রোপার্টি :

mavenUser=admin
mavenPassword=admin123

build.gradle :

...
authentication(userName: mavenUser, password: mavenPassword)

2
gradle.propertiesচেক ইন করা উচিত নয় VCS?
theblang

24
গ্রেডল ব্যবহারকারী বাড়ির এক নয় (উপরের পাথ দেখুন)।
পিটার নিদারউইজার

গ্রেডগুলির কিছু সংস্করণগুলির জন্য ... ম্যাভেনপ্যাসওয়ার্ডের পরিবর্তে ম্যাভেনপাস ব্যবহার করুন
রডরিগো

2
প্রকল্পের বৈশিষ্ট্যগুলি পাসের প্রমাণীকরণ হিসাবে নিম্নলিখিত হিসাবে পরামর্শ দিচ্ছি (ব্যবহারকারীর নাম: প্রকল্প.properties.mavenUser, পাসওয়ার্ড: project.properties.mavenPassword) যখন কোনও বৈশিষ্ট্য mavenUser / পাসওয়ার্ড নির্দিষ্ট না করা হয় তখন এটি কোনও বিল্ড ব্যর্থ হবে না।
দিমিত্রি

আমাকে একই কাজ করতে হয়েছিল তবে 2 টি ভিন্ন ভিন্ন পরিবেশের ভেরিয়েবলগুলি ব্যবহার করতে হয়েছিল: SONATYPE_NEXUS_USERNAME এবং SONATYPE_NEXUS_PASSWORD
স্নিকোলস

94

প্রথম উত্তরটি এখনও বৈধ, তবে এপিআই অতীতে পরিবর্তিত হয়েছে। আমার সম্পাদনাটি গ্রহণযোগ্য না হওয়ায় আমি পৃথক উত্তর হিসাবে পোস্ট করি।

পদ্ধতিটি authentication()কেবলমাত্র প্রমাণীকরণ পদ্ধতি সরবরাহ করার জন্য ব্যবহৃত হয় (যেমন বেসিক) তবে কোনও শংসাপত্র নয়।

এছাড়াও আপনি এটা ব্যবহার করা উচিত নয় যেহেতু এটি ব্যর্থতা উপর প্লেইন পরিচয়পত্র মুদ্রণ হচ্ছে!

এটি আপনার দেখতে এটির মতো দেখতে হবে build.gradle

    maven {
        credentials {
            username "$mavenUser"
            password "$mavenPassword"
        }
        url 'https://maven.yourcorp.net/'
   }

ইন gradle.propertiesআপনার userhome Dir স্থাপনকারি:

mavenUser=admin
mavenPassword=admin123

এছাড়াও নিশ্চিত করুন যে GRADLE_USER_HOMEসেট করা হয় ~/.gradleঅন্যথায় বৈশিষ্ট্য দায়ের সেখানে সমাধান করা হবে না।

আরো দেখুন:

https://docs.gradle.org/current/userguide/build_environment.html

এবং

https://docs.gradle.org/current/userguide/d dependency_management.html (23.6.4.1)


এটি কীভাবে ওপি ব্যবহার করবে তা আপনি পরিষ্কার করতে পারেন? অর্থাত্ এটি নামস্থান আপলোড আর্কাইভস {ভান্ডারগুলি {mavenDeployer in
ম্যাট সি

দুঃখিত তবে আমি আপনার প্রশ্নটি পাই না
প্রশ্নকর্তা

4
ওপিতে নাম স্থান আপলোডআরচাইভস> সংগ্রহশালা> mavenDeployer> সংগ্রহস্থল> প্রমাণীকরণের মধ্যে প্রমাণীকরণ ব্যবহার করা হয়। তারা এখনও আমার ধারনা করা আপলোডআর্কাইভগুলি ব্যবহার করতে চাইবে, সুতরাং আপনার সমাধান প্রয়োগের সাথে ওপি'র বিল্ড কনফিগারেশনটি কীভাবে দেখাবে? তাদের কি প্রমাণীকরণ অপসারণ করা দরকার, এবং এটি কার্যকর হবে?
ম্যাট সি

আসলে আমি কখনই আপনাকে বলতে পারি না যেহেতু আমি কখনই ম্যাভেনডেপলিয়র নেমস্পেস ব্যবহার করি নি। আপলোডচাইভগুলি এখনও একটি বৈধ টাস্ক তবে সেই কাজের জন্য শংসাপত্রগুলি মেভেন নেমস্পেসের মধ্যে কনফিগার করা আছে।
প্রশ্নোত্তর

এই উত্তরটি প্রশ্নের সাথে বেমানান। maven-publishপ্রশ্নটি প্লাগইন ব্যবহার করার সময় এটি mavenপ্লাগইন ব্যবহার করছে ।
চেরি চেং

16

আপনি কমান্ড লাইনে ভেরিয়েবলগুলি সরবরাহ করতে পারেন -PmavenUser=user -PmavenPassword=password

এটি দরকারী হতে পারে আপনি কোনও কারণে গ্রেডল.প্রপার্টি ফাইল ব্যবহার করতে পারবেন না। উদাহরণস্বরূপ একটি বিল্ড সার্ভারে আমরা গ্রেডলটি -gবিকল্পের সাথে ব্যবহার করছি যাতে প্রতিটি বিল্ড পরিকল্পনার নিজস্ব থাকে GRADLE_HOME


16

আপনার যদি ব্যবহারকারীর নির্দিষ্ট শংসাপত্র থাকে (অর্থাত্ প্রতিটি বিকাশকারীদের আলাদা আলাদা ব্যবহারকারীর নাম / পাসওয়ার্ড থাকতে পারে) তবে আমি গ্রেড-প্রপার্টি-প্লাগইন ব্যবহার করার পরামর্শ দেব ।

  1. ডিফল্ট রাখুন gradle.properties
  2. প্রতিটি বিকাশকারী ওভাররাইড করে gradle-local.properties(এটি গিট উপেক্ষা করা উচিত)।

এটি ব্যবহার করে ওভাররাইড করার চেয়ে ভাল $USER_HOME/.gradle/gradle.propertiesকারণ বিভিন্ন প্রকল্পের একই সম্পত্তি নাম থাকতে পারে।


আপনি কি একটি পরিশ্রমী মেগাওয়াট যুক্ত করতে পারেন? কীভাবে প্লাগইনটি অন্তর্ভুক্ত করবেন build.gradleuploadArchivesকনফিগারেশনে শংসাপত্রগুলি কীভাবে ব্যবহার করবেন ?
koppor

@ কোপ্পোর নিশ্চিত না যে এটি এখনও কাজ করে তবে আমি এটি আমার ওপেন সোর্স প্রকল্পে ব্যবহার করেছি - github.com/krishnaraj/oneclipboard/blob/master/build.gradle
কৃষ্ণরাজ

7

আপনি কোনও প্রোপার্টি ফাইলগুলিতে শংসাপত্রগুলি রাখতে পারেন এবং এই জাতীয় কিছু ব্যবহার করে এটি পড়তে পারেন:

Properties props = new Properties() 
props.load(new FileInputStream("yourPath/credentials.properties")) 
project.setProperty('props', props)

আর একটি পদ্ধতি হ'ল ওএস পর্যায়ে পরিবেশের পরিবর্তনগুলি সংজ্ঞায়িত করা এবং সেগুলি ব্যবহার করে পড়ুন:

System.getenv()['YOUR_ENV_VARIABLE']

2

আপনারা যারা ম্যাকওএস তৈরি করছেন এবং আপনার পাসওয়ার্ডটি আপনার মেশিনে স্পষ্ট পাঠ্যে রেখে দেওয়া পছন্দ করেন না, আপনি শংসাপত্রগুলি সংরক্ষণ করতে কীচেইন সরঞ্জামটি ব্যবহার করতে পারেন এবং তারপরে এটি বিল্ডে ইনজেকশন করতে পারেন। ক্রেডিটগুলি ভিক্টর এরিকসনের কাছে যায়। https://pilloxa.gitlab.io/posts/safer-passwords-in-gradle/

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