গ্রেডলে, পরিবেশের ভেরিয়েবলগুলি পাওয়ার আরও ভাল উপায় কী?


151

বেশ কয়েকটি কার্যক্রমে আমি আমার বাড়ির ফোল্ডারে জারগুলি উল্লেখ করি।

পরিবেশের ভেরিয়েবলগুলি পাওয়ার চেয়ে আরও ভাল উপায় কি?

ENV = System.getenv()
HOME = ENV['HOME']

task copyToServer(dependsOn: 'jar', type: Copy) {

 from 'build/libs/'
 into HOME + "/something/plugins/"
}

এটি $ হোম সেট করে তবে আমি আশা করছিলাম যে আমি ডকুমেন্টেশন থেকে কিছু জাদু মিস করেছি।


1
সচেতন হন যে পরিবেশের পরিবর্তনশীল গ্রেডল দ্বারা দেখা এবং ব্যবহারের আগে এটি রফতানি করা দরকার, প্রাক্তন। $ export FOO=bar
luka5z

এখানে আমি এখানে কিছু মিস করছি ... আমাকে রাখতে হবে def HOME: গ্রেডেল ৪.৪.১ এর Projectকোনও HOMEসম্পত্তি বা ENVসম্পত্তি নেই। এমন কিছু হতে পারে যা বাদ পড়ে ...?
মাইকে রডেন্ট

উত্তর:


243

আমরা হব; এটি পাশাপাশি কাজ করে:

home = "$System.env.HOME"

আপনি কী লক্ষ্য করছেন তা পরিষ্কার নয়।


17
বা আপনার ব্যবহারের জন্য: "$ {System.env.HOME} / কিছু / প্লাগইনস"
JoeG

8
সচেতন থাকুন যে "। System.env.FOO" স্ট্রিংকে "নাল" দিয়ে স্ট্রিং দেয়, যদি পরিবেশে চলক FOO সিস্টেম পরিবেশ পরিবর্তনশীল হিসাবে সংজ্ঞায়িত না হয়। কনসোলে মান "নাল" দিয়ে স্ট্রিংটি লগ করা নাল ভেরিয়েবল হিসাবে একই আউটপুট প্রিন্ট করবে এটি বিভ্রান্তিকর হতে পারে।
গোখন বড় আখের

4
বা কেবল হোম = সিস্টেম.ইন.হোম?
এলিস পারসেল

14
আপনি যদি এমন পরিবেশের পরিবর্তনশীল পেতে চেষ্টা করছেন যা সেট নাও হতে পারে System.getenv('VAR')তবে নির্ধারিত না হলে কোনটি বাতিল করে তা ব্যবহার করা ভাল । আপনি যদি ব্যবহার করেন "$System.env.VAR"তবে এটি স্ট্রিংটি ফিরে আসবে "null"
ক্রিশ

এখানে আমি এখানে কিছু মিস করছি ... আমাকে রাখতে হবে def home: গ্রেডেল ৪.৪.১ এর Projectকোনও homeসম্পত্তি নেই। এমন কিছু হতে পারে যা বাদ পড়ে ...?
মাইকে রডেন্ট

100

গ্রেডল ১.১১ তে কাজ করার জন্য @ থার্ডজ দ্বারা প্রস্তাবিত ফর্মটি আমি পাই না, তবে এটি আমার পক্ষে কাজ করে:

home = System.getenv('HOME')

এটি মনে রাখতে সহায়তা করে যে খাঁটি জাভাতে যে কোনও কিছু কাজ করে যা গ্রেডলেও কাজ করবে।


কেন নিশ্চিত না তবে আমি কেবল System.getenv('HOME')আমার জন্য সংস্করণটি পেতে পারি। অন্যান্য সংস্করণটি ফিরতে থাকবেnull
কিপ

1
আপনি ভুল করে দ্বিগুণ পরিবর্তে একক উদ্ধৃতি ব্যবহার করেছেন, সম্ভবত?
অ্যালিস পুরসেল

7
এটি উত্তরের চেয়ে ভাল: stackoverflow.com/a/9856769/689223 , কারণ এটি উপস্থিত না থাকলে nullপরিবর্তে এটি ফিরে আসে "null"
রিকার্ডো ফ্রেইটাস

12

অ্যান্ড্রয়েড গ্রেড 0.4.0 এ আপনি কেবল এটি করতে পারেন:

println System.env.HOME

শ্রেণিপথ com.android.tools.build:gradle- এক্সপেরিমেন্টাল ০.৪.৪


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