কিছু তদন্তের পরে আমি এই সিদ্ধান্তে পৌঁছেছি যে নিম্নলিখিত পদ্ধতিটি সবচেয়ে ভাল বলে মনে হচ্ছে।
কিছু / subpackage / Util.groovy
@GrabResolver(name = 'nexus', root = 'https://local-nexus-server:8443/repository/maven-public', m2Compatible = true)
@Grab('com.google.errorprone:error_prone_annotations:2.1.3')
@Grab('com.google.guava:guava:23.0')
@GrabExclude('com.google.errorprone:error_prone_annotations')
import com.google.common.base.Strings
class Util {
void msg(int a, String b, Map c) {
println 'Message printed by msg method inside Util.groovy'
println "Print 5 asterisks using the Guava dependency ${Strings.repeat("*", 5)}"
println "Arguments are a=$a, b=$b, c=$c"
}
}
উদাহরণস্বরূপ
#!/usr/bin/env groovy
Class clazz = new GroovyClassLoader().parseClass("${new File(getClass().protectionDomain.codeSource.location.path).parent}/some/subpackage/Util.groovy" as File)
GroovyObject u = clazz.newInstance()
u.msg(1, 'b', [a: 'b', c: 'd'])
example.groovyস্ক্রিপ্টটি চালানোর জন্য , এটি আপনার সিস্টেমের পথে যুক্ত করুন এবং যে কোনও ডিরেক্টরি থেকে টাইপ করুন:
example.groovy
স্ক্রিপ্ট প্রিন্ট করে:
Message printed by msg method inside Util.groovy
Print 5 asterisks using the Guava dependency *****
Arguments are a=1, b=b, c=[a:b, c:d]
উপরোক্ত উদাহরণটি নিম্নলিখিত পরিবেশে পরীক্ষা করা হয়েছিল: Groovy Version: 2.4.13 JVM: 1.8.0_151 Vendor: Oracle Corporation OS: Linux
উদাহরণটি নিম্নলিখিতটি দেখায়:
Utilগ্রোভি স্ক্রিপ্টের অভ্যন্তরে কীভাবে ক্লাস ব্যবহার করবেন ।
- তৃতীয় পক্ষের গ্রন্থাগারটিকে নির্ভরতা ( ) হিসাবে অন্তর্ভুক্ত করে
Utilকল করার একটি শ্রেণি ।GuavaGrape@Grab('com.google.guava:guava:23.0')
Utilবর্গ একটি সাব-রক্ষিত পারবেন না।
Utilক্লাসের মধ্যে একটি পদ্ধতিতে তর্ক বিতরণ করা ।
অতিরিক্ত মন্তব্য / পরামর্শ:
- আপনার গ্রোভি স্ক্রিপ্টগুলির মধ্যে পুনরায় ব্যবহারযোগ্য কার্যকারিতার জন্য গ্রুভি স্ক্রিপ্টের পরিবর্তে সর্বদা গ্রুভি ক্লাস ব্যবহার করুন। উপরের উদাহরণটি Util.groovy ফাইলে সংজ্ঞায়িত ইউটিল ক্লাস ব্যবহার করে। পুনরায় ব্যবহারযোগ্য কার্যকারিতার জন্য গ্রোভি স্ক্রিপ্টগুলি ব্যবহার করা সমস্যাযুক্ত। উদাহরণস্বরূপ, যদি গ্রোভি স্ক্রিপ্ট ব্যবহার করা হয় তবে ইউটিল শ্রেণীর সাথে স্ক্রিপ্টের নীচে ইনস্ট্যান্ট করাতে হবে
new Util(), তবে সবচেয়ে গুরুত্বপূর্ণ বিষয়টি এটি ইউটিলি.groovy ব্যতীত অন্য কোনও ফাইলের মধ্যে স্থাপন করতে হবে। পড়ুন শ্রেণীর বনাম স্ক্রিপ্ট খাঁজকাটা স্ক্রিপ্ট এবং খাঁজকাটা শ্রেণীর ভিন্নতা নিয়ে আরো বিস্তারিত জানার জন্য।
- উপরের উদাহরণে আমি এর
"${new File(getClass().protectionDomain.codeSource.location.path).parent}/some/subpackage/Util.groovy"পরিবর্তে পথটি ব্যবহার করি "some/subpackage/Util.groovy"। এটি গ্যারান্টি দিবে যে Util.groovyফাইলটি সর্বদা বর্তমান গ্রাফিক স্ক্রিপ্টের অবস্থান ( example.groovy) এর সাথে সম্পর্কিত এবং বর্তমান কার্যনির্বাহী ডিরেক্টরি সম্পর্কিত নয়। উদাহরণস্বরূপ, ব্যবহারের "some/subpackage/Util.groovy"ফলে অনুসন্ধানে ফলাফল হবে WORK_DIR/some/subpackage/Util.groovy।
- আপনার গ্রোভি স্ক্রিপ্টগুলির নাম দেওয়ার জন্য জাভা ক্লাসের নামকরণ কনভেনশন অনুসরণ করুন। আমি ব্যক্তিগতভাবে একটি ছোট বিচ্যুতি পছন্দ করি যেখানে স্ক্রিপ্টগুলি মূলধনের পরিবর্তে একটি নিম্ন বর্ণ দিয়ে শুরু হয়। উদাহরণস্বরূপ,
myScript.groovyএকটি স্ক্রিপ্টের নাম এবং MyClass.groovyএটি একটি শ্রেণীর নাম। নামকরণের my-script.groovyফলে নির্দিষ্ট পরিস্থিতিতে রানটাইম ত্রুটি ঘটবে কারণ ফলাফলকারী শ্রেণীর একটি বৈধ জাভা শ্রেণীর নাম থাকবে না।
- জেভিএম বিশ্বে সাধারণভাবে সম্পর্কিত কার্যকারিতাটির নাম দেওয়া হয় জেএসআর 223: জাভার স্ক্রিপ্টিং । গ্রোভিতে বিশেষত কার্যকারিতাটির নাম গ্রোভী ইন্টিগ্রেশন মেকানিজম । প্রকৃতপক্ষে, গ্রোভী বা জাভা থেকে যে কোনও জেভিএম ভাষা কল করতে একই পন্থাটি ব্যবহার করা যেতে পারে । এ জাতীয় জেভিএম ভাষার কয়েকটি উল্লেখযোগ্য উদাহরণ হ'ল গ্রোভি, জাভা, স্কালা, জে রুবি এবং জাভাস্ক্রিপ্ট (রাইনো)।