মাভেনের জন্য একটি গিট সংগ্রহশালা গঠনের সেরা উপায়


19

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

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

এটি একটি খুব শোরগোলের পরিবেশ তৈরি করবে। যদি সম্পর্কহীন প্রকল্পগুলিতে দু'টি দল কাজ করে থাকে তবে তাদের ক্রমাগত অন্য দলের সাথে সংযোজন করতে হবে। আদর্শভাবে আমি প্রতি প্রকল্পে একটি করে রেপো রাখতে চাই।

কিন্তু ম্যাভেন অত্যন্ত প্রধান পুরোহিত-সংক্রান্ত মডেল, যা সঙ্গে সংঘর্ষে যে সাজানোর দাবি উপ-প্রকল্প উপ-ফোল্ডার হও।

লোকেরা কীভাবে এই দুটি মডেলের মধ্যে সমন্বয় সাধন করেছে সে সম্পর্কে আমার কিছু পরামর্শ দরকার ... ধন্যবাদ!


2
গিট সাবমডিউল? git-scm.com/book/en/Git-Tools-Submodules
lwm

উত্তর:


19

আপনার কাছে 2 টি বিকল্প রয়েছে:
1. গিট উপায়ে: সাবমডিউলগুলি ব্যবহার করুন। এখানে একটি ডকুমেন্টেশন এখানে কীভাবে গিট সাবমোডিউলগুলি গিট সাবমডিউলগুলি পরিচালনা করে । আমি ব্যক্তিগতভাবে এটি ব্যবহার করিনি তবে এটি আপনার সমস্যার সাথে মানিয়ে যায় বলে মনে হচ্ছে।
২. মার্ভেন উপায়ে: মভেনে আপনার মূল প্রকল্পটি (কনফিগারেশন) আপনার সমস্ত প্রকল্পের পৈতৃক ডিরেক্টরি হায়ারারাক্যালি করা বাধ্যতামূলক নয়। আপনার মতো কাঠামো থাকতে পারে:

configuration
 +-- pom.xml (configuration:XXX)
project1
 +-- pom.xml (project1:1.0-SNAPSHOT)
 !
 +-- module11 
 !     +-- pom.xml (1.0-SNAPSHOT)
 +-- module12
       +-- pom.xml (1.0-SNAPSHOT)
project2
 +-- pom.xml (project2:2.0-SNAPSHOT)
 !
 +-- module21 
 !     +-- pom.xml (2.0-SNAPSHOT)
 +-- module22
       +-- pom.xml (2.0-SNAPSHOT)

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

কেবলমাত্র বিশেষ ক্ষেত্রে যখন আপনি কনফিগারেশন এবং প্রকল্পগুলি উভয়ই SNAPSHOT সংস্করণ হিসাবে রাখতে চান, প্রজেক্ট 1 বা প্রজেক্ট 2 এ আপনি <relativePath>ট্যাগের অভ্যন্তরে <parent>ট্যাগটি আপনার স্থানীয় কনফিগারেশনের পথ নির্দেশ করতে পারেন । আমি এটির প্রস্তাব দিচ্ছি না কারণ উন্নয়নের পরিবেশে সমস্যা তৈরি হবে (অন্ততপক্ষে আমার জন্য গ্রহপসে)

আমি আমার ইংরাজির জন্য ক্ষমা চাই।


3

মাভেন চাইবে যে আমাদের সমস্ত তথ্যপ্রযুক্তি প্রকল্প সেই প্রধান প্রকল্পের সাবফোল্ডারে থাকবে

না, মাভেন কেবল প্রয়োজনীয় নিদর্শনগুলি পুনরুদ্ধার করতে সক্ষম হতে চান। এটি করার সর্বোত্তম উপায় হ'ল নেক্সাস বা আর্টিফ্যাক্টরির মতো একটি আর্টিক্ট রিপোজিটরি দিয়ে । প্রতিটি প্রকল্পের নিজস্ব গিট সংগ্রহস্থল থাকতে পারে।

আমরা একটি শীর্ষ স্তরের প্যারেন্ট পম চাই যা প্লাগইন সংস্করণগুলি নিয়ন্ত্রণ করে এবং কনফিগারেশন তৈরি করে (রেপো কনফিগারেশন, কী কী শৈলীগুলি তৈরি করতে হবে , কনভেনশনগুলির নামকরণ, প্লাগইন সংস্করণ ইত্যাদি)

আপনার আসল সমস্যা আছে। কনফিগারেশন প্রয়োগের জন্য প্যারেন্ট POM ব্যবহার করা বোধগম্য হয় তবে বিল্ড কন্ট্রোলের সাথে কনফিগারেশন একত্রিত করার কোনও কারণ নেই। প্রকৃতপক্ষে, একক একা একাধিক-মডিউল প্রকল্প বাদে, আমি বলব যে এটি একটি অত্যন্ত খারাপ ধারণা, কেবলমাত্র যে কারণে আপনি বর্ণনা করেছেন (প্লাস এই সত্য যে আপনাকে আপনার সমস্ত প্রকল্প তৈরি করতে হবে, সমস্ত সময়).


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

প্রিয় @parsifal দয়া জাভা বহু স্তর অ্যাপ্লিকেশন তৈরি সম্পর্কে আমার প্রশ্ন এ দৃষ্টিশক্তি আছে stackoverflow.com/questions/49562268/...
হোসেন Aqajani
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.