জাভা লক্ষ্য করে অন্য একটি বিল্ড টুল সত্যিই আমাকে কী পেতে পারে?
আপনি যদি অন্য সরঞ্জামের উপর গ্র্যাডল ব্যবহার করেন তবে কেন?
জাভা লক্ষ্য করে অন্য একটি বিল্ড টুল সত্যিই আমাকে কী পেতে পারে?
আপনি যদি অন্য সরঞ্জামের উপর গ্র্যাডল ব্যবহার করেন তবে কেন?
উত্তর:
আমি ক্রোধে গ্রেডলকে নিজে ব্যবহার করি না (এখন পর্যন্ত কেবল একটি খেলনা প্রকল্প) [লেখক মানে তারা এখন পর্যন্ত কেবল একটি খেলনা প্রকল্পে গ্রেডল ব্যবহার করেছে, গ্রেডল কোনও খেলনা প্রকল্প নয় - মন্তব্য দেখুন] , তবে আমি বলব যে এটিকে ব্যবহার করার জন্য যে কারণে কেউ বিবেচনা করবে তা হ'ল এন্ট এবং মাভেনের হতাশার কারণ।
আমার অভিজ্ঞতায় পিঁপড়া প্রায়শই কেবল লেখার জন্য থাকে (হ্যাঁ আমি জানি এটি সুন্দরভাবে মডুলার, মার্জিত বিল্ড এস লিখতে সম্ভব , তবে সত্যটি বেশিরভাগ লোকেরা করেন না)। যে কোনও অ-তুচ্ছ প্রকল্পের জন্য এটি মন-নমনীয় হয়ে ওঠে এবং জটিল বিল্ডগুলি সত্যই বহনযোগ্য ensure এর অপরিহার্য প্রকৃতি বিল্ডগুলির মধ্যে কনফিগারেশনটির প্রতিলিপি তৈরি করতে পারে (যদিও ম্যাক্রোগুলি এখানে সহায়তা করতে পারে)।
ম্যাভেন বিপরীত পদ্ধতি গ্রহণ করে এবং আশা করে যে আপনি ম্যাভেন জীবনচক্রের সাথে পুরোপুরি একীভূত হবেন। অভিজ্ঞ পিঁপড়ের ব্যবহারকারীরা এটি বিশেষত বিদ্রূপযুক্ত দেখাচ্ছেন কারণ মাভেন পিঁপড়ে থাকা আপনার অনেকগুলি স্বাধীনতা সরিয়ে দিয়েছেন। উদাহরণস্বরূপ একটি সোনাটাইপ ব্লগ রয়েছে যা মভেন সমালোচনা এবং তাদের প্রতিক্রিয়াগুলির অনেকগুলি গণনা করে।
মাভেন প্লাগইন মেকানিজমটি খুব শক্তিশালী বিল্ড কনফিগারেশনগুলির জন্য অনুমতি দেয় এবং উত্তরাধিকারের মডেলটির অর্থ আপনি পুরো বিল্ড এন্টারপ্রাইজগুলির জন্য আপনার বিল্ড কনফিগারেশনগুলিকে আবদ্ধ করে প্যারেন্ট POMs এর একটি ছোট সেট নির্ধারণ করতে পারেন এবং পৃথক প্রকল্পগুলি সেই কনফিগারেশনের উত্তরাধিকারী হতে পারে, এগুলিকে হালকা করে দেয়। ম্যাভেন কনফিগারেশনটি খুব ভার্জোজ (যদিও ম্যাভেন 3 এটি সমাধানের প্রতিশ্রুতি দেয়), এবং যদি আপনি এমন কিছু করতে চান যা "ম্যাভেনের উপায় নয়" আপনাকে একটি প্লাগইন লিখতে হবে বা হ্যাকি পিঁপড়া ইন্টিগ্রেশন ব্যবহার করতে হবে। নোট আমি মাভেন প্লাগইনগুলি লিখতে পছন্দ করি তবে প্রশংসা করি যে অনেকে জড়িত প্রচেষ্টাটিতে আপত্তি জানাবে।
গ্রেডল প্রতিশ্রুতি দেয় যে এন্ট এবং মাভেনের মধ্যে মিষ্টি স্পটটি আঘাত করবে। নির্ভরতা রেজোলিউশনের জন্য এটি আইভির পদ্ধতির ব্যবহার করে। এটি কনফিগারেশন ওভার কনভেনশনের অনুমতি দেয় তবে প্রথম শ্রেণির নাগরিক হিসাবে পিপীলিকার কাজগুলিও অন্তর্ভুক্ত করে। এটি বুদ্ধিমানের সাথে আপনাকে বিদ্যমান মাভেন / আইভী সংগ্রহস্থলগুলি ব্যবহার করার অনুমতি দেয়।
সুতরাং আপনি যদি পিপীলিকা এবং ম্যাভেনের ব্যথা পয়েন্টগুলির সাথে আঘাত করে এবং আটকে গিয়ে থাকেন তবে গ্রেডলকে চেষ্টা করে দেখার পক্ষে এটি উপযুক্ত, যদিও আমার মতে এটি দেখা যায় যে আপনি কেবল অজানা সমস্যার জন্য ট্রেডিং না করে থাকেন কিনা। পুডিংয়ের প্রমাণ খাওয়ার মধ্যে রয়েছে যদিও আমি পণ্যটি একটু বেশি পরিপক্ক হওয়া অবধি এবং অন্যেরা যে কোনও গোঁজাকে আস্তে আস্তে না করানো পর্যন্ত রায় সংরক্ষণ করব (তারা এটিকে কারণ হিসাবে রক্তপাতের ধার বলে)। আমি এখনও আমার খেলনা প্রকল্পগুলিতে এটি ব্যবহার করব যদিও, বিকল্পগুলির বিষয়ে সচেতন হওয়া ভাল।
গ্রেডল বিভিন্ন উদ্দেশ্যে ব্যবহার করা যেতে পারে - এটি পিঁপড়ের চেয়ে অনেক ভাল সুইস আর্মি ছুরি - তবে এটি বিশেষত বহু-প্রকল্পের বিল্ডগুলিতে ফোকাস করেছে।
প্রথমত, গ্রেডল একটি নির্ভরতা প্রোগ্রামিং সরঞ্জাম যার অর্থ এটি একটি প্রোগ্রামিং সরঞ্জাম। গ্রেডলের সাহায্যে আপনি আপনার সেটআপের যে কোনও এলোমেলো কাজ সম্পাদন করতে পারেন এবং গ্রেডল নিশ্চিত করবেন যে সমস্ত ঘোষিত নির্ভরতা সঠিকভাবে এবং সময়মত সম্পাদিত হয়েছে। আপনার কোডটি যে কোনও ধরণের লেআউটে (গাছ, সমতল, বিচ্ছিন্ন, ...) অনেকগুলি ডিরেক্টরিতে ছড়িয়ে যেতে পারে।
গ্রেডলের দুটি স্বতন্ত্র পর্যায় রয়েছে: মূল্যায়ন এবং সম্পাদন। মূলত, মূল্যায়নের সময় গ্রেডল যে ডিরেক্টরিগুলি সন্ধান করতে পারে তার মধ্যে বিল্ড স্ক্রিপ্টগুলি সন্ধান করবে এবং মূল্যায়ন করবে। কার্যকর করার সময় গ্রেডল কার্য সম্পাদন করবে যা মূল্য নির্ধারণের সময় লোড করা হয়েছে আন্তঃ নির্ভরতা অ্যাকাউন্টে নেওয়া।
এই নির্ভরতা প্রোগ্রামিং বৈশিষ্ট্যগুলির উপরে গ্র্যাডেল অ্যাপাচি আইভির সাথে সংহত করে প্রকল্প এবং জেআর নির্ভরতা বৈশিষ্ট্যগুলি যুক্ত করে। আপনি জানেন যে আইভী মাভেনের চেয়ে অনেক বেশি শক্তিশালী এবং অনেক কম মতামত নির্ভরশীলতা পরিচালন সরঞ্জাম।
গ্রেডেল প্রকল্পগুলির মধ্যে এবং প্রকল্প এবং জেআর এর মধ্যে নির্ভরতা সনাক্ত করে। গ্রেডল আইবিবলি এক বা আপনার নিজস্ব সংগ্রহস্থলের মতো ম্যাভেন সংগ্রহশালা (ডাউনলোড এবং আপলোড) এর সাথে কাজ করে তবে এটি আপনাকে সমর্থন করে এবং অন্যান্য ধরণের সংগ্রহস্থল অবকাঠামো সমর্থন করে।
বহু-প্রকল্পের বিল্ডগুলিতে গ্রেডল উভয়ই অভিযোজ্য এবং বিল্ডের কাঠামো এবং আর্কিটেকচারের সাথে খাপ খাইয়ে নেয়। মাভেনের সাথে আপনার প্রয়োজন মতো আপনার বিল্ড সরঞ্জামের সাথে আপনার কাঠামো বা আর্কিটেকচারটি মানিয়ে নিতে হবে না।
গ্রেডল আপনার পথে না যাওয়ার জন্য খুব চেষ্টা করে, ম্যাভেন প্রায় কখনও চেষ্টা করেন না। কনভেনশন ভাল তবে নমনীয়তাও। গ্রেডেল আপনাকে মাভেনের থেকে অনেক বেশি বৈশিষ্ট্য দেয় তবে সবচেয়ে গুরুত্বপূর্ণ হল গ্রেডল আপনাকে মাভেন থেকে দূরে বেদনাবিহীন পরিবর্তনের পথ সরবরাহ করবে।
এটি কিছুটা বিতর্কিত হতে পারে, তবে গ্র্যাডল এটি সম্পূর্ণরূপে প্রোগ্রামিংয়ের ভাষাটি গোপন করে না।
পিঁপড়া + পিঁপড়া-অবদান মূলত একটি টিউরিং সম্পূর্ণ প্রোগ্রামিং ল্যাঙ্গুয়েজ যেটি আসলেই কেউ প্রোগ্রাম করতে চায় না।
মাভেন সম্পূর্ণরূপে ঘোষণামূলক হওয়ার চেষ্টা করার এবং আপনার যুক্তির প্রয়োজন হলে আপনাকে একটি প্লাগইন লিখতে এবং সংকলন করতে বাধ্য করার বিপরীত পদ্ধতি গ্রহণ করার চেষ্টা করে। এটি এমন একটি প্রকল্পের মডেল চাপিয়ে দেয় যা সম্পূর্ণ জটিল নয়। গ্রেডল এই সমস্ত সরঞ্জামগুলির মধ্যে সেরাকে একত্রিত করে:
গ্রেডল হ'ল আমার ব্যবহার করা এখনও সর্বাধিক কনফিগার এবং নমনীয় বিল্ড সরঞ্জাম। ডিএসএল এবং কনফিগারেশনের মত ধারণাগুলি শিখতে এর জন্য কিছুটা বিনিয়োগ প্রয়োজন তবে আপনার যদি কোনও ননসেন্স এবং সম্পূর্ণরূপে কনফিগারযোগ্য জেভিএম বিল্ড টুলের প্রয়োজন হয় তবে এটি পরাস্ত করা শক্ত।
উভয় ফ্রেমওয়ার্ক থেকে সেরাটি গ্র্যাডল এন্ট এবং মাভেন উভয়ের সাথে দুর্দান্তভাবে সংযুক্ত করে। এন্টি থেকে কনফিগারেশন, নির্ভরতা পরিচালনা এবং মাভেনের প্লাগইনগুলির বিষয়ে কনভেনশন থেকে নমনীয়তা।
সুতরাং আপনি যদি কোনও মানকীয় জাভা তৈরির মতো মানক জাভা তৈরি করতে চান তবে পরীক্ষার টাস্কটি কিছু কাস্টম পদক্ষেপ করতে হবে যা এটি নীচের মত দেখাচ্ছে।
build.gradle:
apply plugin:'java'
task test{
doFirst{
ant.copy(toDir:'build/test-classes'){fileset dir:'src/test/extra-resources'}
}
doLast{
...
}
}
তার উপরে এটি গ্রোভি সিনট্যাক্স ব্যবহার করে যা আরও বেশি এক্সপ্রেশন পাওয়ার দেয় তারপরে পিপীলিকা / মভেনের এক্সএমএল দেয়।
এটি পিঁপড়ার একটি সুপারসেট - আপনি নিট, গ্রোভির মতো সিনট্যাক্স সহ গ্রেডের সমস্ত পিঁপড়া কাজগুলি ব্যবহার করতে পারেন, যেমন ie
ant.copy(file:'a.txt', toDir:"xyz")
অথবা
ant.with{
delete "x.txt"
mkdir "abc"
copy file:"a.txt", toDir: "abc"
}
আমরা গ্র্যাডল ব্যবহার করি এবং এটি ম্যাভেন এবং পিপীলিকার চেয়ে বেছে নিয়েছি। পিপীলিকা আমাদের সম্পূর্ণ নমনীয়তা দিয়েছে এবং আইভী মাভেনের চেয়ে আরও বেশি নির্ভরশীলতা সরবরাহ করে তবে মাল্টি-প্রকল্প বিল্ডগুলির পক্ষে দুর্দান্ত সমর্থন নেই। আপনি বহু-প্রকল্প বিল্ডগুলি সমর্থন করতে প্রচুর কোডিং করছেন up এছাড়াও কিছু বিল্ড-বাই-কনভেনশন থাকা দুর্দান্ত এবং বিল্ড স্ক্রিপ্টগুলি আরও সংক্ষিপ্ত করে তোলে। মাভেনের সাথে, এটি কনভেনশন দ্বারা খুব দূরে বিল্ড নেয় এবং আপনার বিল্ড প্রক্রিয়াটি কাস্টমাইজ করা হ্যাক হয়ে যায়। এছাড়াও, মাভেন একটি শিল্পকলা প্রকাশের প্রতিটি প্রকল্পের প্রচার করে। কখনও কখনও আপনার একটি প্রকল্প সাবপ্রজেক্টগুলিতে বিভক্ত হয়ে যায় তবে আপনি চান যে সমস্ত উপ-প্রকল্পগুলি একসাথে নির্মিত এবং রূপান্তরিত হোক। ম্যাভেনের জন্য ডিজাইন করা কিছু নেই।
গ্রেডলের সাথে আপনার পিঁপড়ের নমনীয়তা থাকতে পারে এবং ম্যাভেনের কনভেনশন দ্বারা বিল্ড করতে পারেন। উদাহরণস্বরূপ, আপনার নিজের কাজটি দিয়ে প্রচলিত বিল্ড লাইফসাইকেলটি প্রসারিত করা তুচ্ছ। এবং আপনি না চাইলে আপনাকে কোনও কনভেনশন ব্যবহার করতে বাধ্য করা হবে না। গ্রোভি এক্সএমএল এর চেয়ে কোডে খুব সুন্দর। গ্রেডলে আপনি স্থানীয় ফাইল সিস্টেমে প্রকল্পগুলির মধ্যে নির্ভরতা সংজ্ঞায়িত করতে পারবেন প্রতিস্থাপনের জন্য প্রত্যেকের জন্য শিল্পকর্ম প্রকাশের প্রয়োজন ছাড়াই। অবশেষে, গ্রেডল আইভি ব্যবহার করে, সুতরাং এটির উপর নির্ভরশীলতা পরিচালনা রয়েছে। আমার পক্ষে এখন পর্যন্ত একমাত্র প্রকৃত অবক্ষয় হ'ল পরিপক্কগ্রহণের একীকরণের অভাব, তবে ম্যাভেনের বিকল্পগুলি আসলে খুব বেশি ভাল নয়।
এটি আমার উত্তর নয়, তবে এটি অবশ্যই আমার সাথে অনুরণিত হয়। এটি অক্টোবর ২০১২ থেকে থট ওয়ার্কসের প্রযুক্তি রাডার থেকে এসেছে :
দুটি জিনিস অ্যান্ট এবং ম্যাভেনের মতো এক্সএমএল-ভিত্তিক বিল্ড সরঞ্জামগুলির সাথে ক্লান্তি সৃষ্টি করেছে: অনেকগুলি রাগী বিন্দুযুক্ত ধনুর্বন্ধনী এবং প্লাগ-ইন আর্কিটেকচারের খাঁটিতা। সিনট্যাক্স সংক্রান্ত সমস্যাগুলি প্রজন্মের মাধ্যমে মোকাবেলা করা যেতে পারে, তবে প্লাগ-ইন আর্কিটেকচারগুলি প্রকল্পগুলি আরও জটিল হয়ে ওঠার কারণে বিল্ড সরঞ্জামগুলির নিখুঁতভাবে বর্ধনের ক্ষমতা সীমিত করে দেয়। আমরা অনুভব করেছি যে প্লাগইনগুলি বিমূর্তির ভুল স্তর, এবং পরিবর্তে গ্রেডল এবং রকের মতো ভাষা-ভিত্তিক সরঞ্জামগুলি পছন্দ করে, কারণ তারা সূক্ষ্ম ধরণের বিমূর্ততা এবং আরও নমনীয়তা দীর্ঘমেয়াদী অফার করে।
গ্রেডল মজাটিকে বিল্ডিং / এসেম্বলিং সফ্টওয়্যারটিতে ফিরিয়ে দেয়। আমি সফটওয়্যারটিকে আমার পুরো ক্যারিয়ার তৈরি করতে পিপড়া ব্যবহার করেছি এবং আমি সর্বদা দেব কাজের আসল "বিল্টিট" অংশটিকে একটি প্রয়োজনীয় মন্দ হিসাবে বিবেচনা করেছি। কয়েক মাস আগে আমাদের সংস্থা বাইনারি রেপো ব্যবহার না করে ক্লান্ত হয়ে পড়েছিল (ভিসিএসের মধ্যে জারগুলিতে চেক করা) এবং এটি খতিয়ে দেখার জন্য আমাকে দায়িত্ব দেওয়া হয়েছিল। আইভির সাহায্যে এটি শুরু হয়েছিল যেহেতু এটি পিপীলিকার শীর্ষে বোল্ট করা যায়, আমার নির্মিত শিল্পকর্মগুলি আমার পছন্দ মতো প্রকাশিত হওয়ার পক্ষে খুব ভাগ্য হয়নি। আমি মাভেনের জন্য গিয়েছিলাম এবং এক্সএমএল দিয়ে হ্যাক করেছি, কিছু সাধারণ সহায়ক লিব্সের জন্য দুর্দান্ত কাজ করেছি তবে মোতায়েনের জন্য প্রস্তুত অ্যাপ্লিকেশনগুলি বান্ডিল করার চেষ্টা করতে আমি মারাত্মক সমস্যার মধ্যে পড়েছিলাম। প্লাগিনগুলি গুগল করতে এবং ফোরামগুলি পড়তে বেশ কষ্ট পেয়েছিল এবং বিভিন্ন প্লাগইনগুলির জন্য ট্রিলিয়ন সাপোর্ট জারগুলি ডাউনলোড করে দিয়েছিলাম যা ব্যবহার করতে আমার খুব কষ্ট হয়েছিল।
তবে একদিন থেকে আমার মেজাজের উন্নতি শুরু হয়েছিল। আমি কোথাও পেয়ে যাচ্ছিলাম। আমার প্রথম পিঁপড়া মডিউলটি স্থানান্তর করতে আমাকে দুই ঘন্টা সময় নিয়েছিল এবং বিল্ড ফাইলটি মূলত কিছুই ছিল না। সহজেই একটি স্ক্রিন লাগানো। বড় "বাহ" ছিল: এক্সএমএলে স্ক্রিপ্ট তৈরি করুন , এটি কত বোকা? একটি নির্ভরতা ঘোষণার ফলে এক সারি লাগে তা আমার কাছে খুব আকর্ষণীয় -> আপনি কোনও পৃষ্ঠায় কোনও নির্দিষ্ট প্রকল্পের জন্য সমস্ত নির্ভরতা সহজেই দেখতে পাচ্ছেন। তার পর থেকে আমি একটি স্থির রোলে ছিলাম, এখন পর্যন্ত যে সমস্ত সমস্যার মুখোমুখি হয়েছিলাম তার জন্য একটি সহজ এবং মার্জিত সমাধান রয়েছে। আমি মনে করি এই কারণগুলি:
এখন আমি আমার বিল্ড প্রক্রিয়ায় যুক্ত করতে নতুন বৈশিষ্ট্যগুলি ভাবার চেষ্টা করে আমার দিনগুলি ব্যয় করি। এটা কতটা অসুস্থ?
নেটিভ বিল্ডগুলি পরিচালনা করাও অনেক সহজ। পিঁপড়া এবং মাভেন কার্যকরভাবে জাভা-কেবল। মাভেনের জন্য কিছু প্লাগইন বিদ্যমান রয়েছে যা কিছু নেটিভ প্রকল্পগুলি হ্যান্ডেল করার চেষ্টা করে তবে তারা কার্যকর কাজ করে না। পিঁপড়ার কাজগুলি এমন লেখা যেতে পারে যা দেশীয় প্রকল্পগুলি সংকলন করে তবে সেগুলি খুব জটিল এবং বিশ্রী।
আমরা জেএনআই এবং অন্যান্য অনেক দেশীয় বিট দিয়ে জাভা করি। গ্রেডল আমাদের পিপীলিকার জগাখিচুড়ি যথেষ্ট সরল করে দিয়েছে। আমরা যখন নেটিভ প্রকল্পগুলিতে নির্ভরতা পরিচালনা প্রবর্তন শুরু করি তখন এটি অগোছালো। আমরা ম্যাভেনকে এটি করার জন্য পেয়েছিলাম, তবে সমমানের গ্রেডল কোডটি মাভেনের যা প্রয়োজন ছিল তার একটি ক্ষুদ্র ভগ্নাংশ ছিল এবং লোকে এটি মাভেন গুরু না হয়ে এটি পড়তে এবং বুঝতে পারে।
আমি এড স্টাওবের সাথে আংশিকভাবে একমত গ্রেডেল স্পষ্টতই মেভেনের তুলনায় আরও শক্তিশালী এবং দীর্ঘতর মেয়াদে আরও নমনীয়তা সরবরাহ করে।
মাভেন থেকে গ্রেডে যাওয়ার জন্য একটি মূল্যায়ন করার পরে, আমরা গ্রেডের সাথে যে দুটি সমস্যার মুখোমুখি হয়েছিলাম তার জন্য নিজেকে মাভেনকে আটকে রাখার সিদ্ধান্ত নিয়েছি (গতিটি মেভেনের চেয়ে ধীর গতির, প্রক্সি কাজ করছে না)।