সুযোগ "আমদানি" এবং "আমদানি" ছাড়াই "পম" টাইপ নির্ভরতা মধ্যে কী পার্থক্য?


112

ম্যাভেন ২.০.৯ থেকে শুরু করে অন্তর্ভুক্ত করার সম্ভাবনা রয়েছে

<type>pom</type>
<scope>import</scope>

মধ্যে <dependencyManagement>অধ্যায়।

যেহেতু আমি এটি বুঝতে পারি, এটি এই পোমে অন্তর্ভুক্ত নির্ভরতার সাথে "প্রতিস্থাপন" করা হবে যেন তারা এখানে মূলত সংজ্ঞায়িত করা হয়েছে।

উপরোক্ত সমাধান এবং importসুযোগ ছাড়াই এই পমের সাধারণ নির্ভরতার মধ্যে কী পার্থক্য রয়েছে (আমি পরেটিকে "নির্ভরতা গোষ্ঠীকরণ" বলে দেখলাম)? নির্ভরতা অগ্রাধিকারটি সমাধান করার সময় এই জাতীয় "শ্রেণিবদ্ধ" নির্ভরতা কি কেবলমাত্র কম পার্থক্য?

উত্তর:


187

আপনি কেবল পরিচালিত নির্ভরতা আমদানি করতে পারেন । এর অর্থ আপনি কেবল আপনার প্রকল্পের POM বিভাগে অন্যান্য POMs আমদানি করতে পারবেন dependencyManagement। অর্থাত

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>other.pom.group.id</groupId>
            <artifactId>other-pom-artifact-id</artifactId>
            <version>SNAPSHOT</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>   
    </dependencies>
</dependencyManagement>
...

তারপরে যা ঘটে তা হ'ল dependencyManagementবিভাগের সংজ্ঞায়িত সমস্ত নির্ভরতাগুলি other-pom-artifact-idআপনার পোমের dependencyManagementবিভাগে অন্তর্ভুক্ত রয়েছে । এর পরে আপনি এই নির্ভরতা উল্লেখ করতে পারেন dependencyএকটি অন্তর্ভুক্ত ছাড়াই আপনার খুলুন POM এর অধ্যায় (এবং তার সন্তান poms সব) versionইত্যাদি

তবে যদি আপনার খুলুন POM আপনি কেবল একটি স্বাভাবিক নির্ভরতা সংজ্ঞায়িত other-pom-artifact-idতাহলে সব dependenciesথেকে dependencyবিভাগে other-pom-artifact-idআপনার প্রকল্পের মধ্যে transitively অন্তর্ভুক্ত করা হয় - তবে সংজ্ঞায়িত নির্ভরতা dependencyManagementবিভাগে other-pom-artifact-idএ সব অন্তর্ভুক্ত হয় না।

সুতরাং মূলত দুটি ভিন্ন প্রক্রিয়া আমদানি করার জন্য / দুটি ভিন্ন ধরণের নির্ভরতা (পরিচালিত নির্ভরতা এবং স্বাভাবিক নির্ভরতা) সহ ব্যবহৃত হয়।

ম্যাভেন ওয়েবসাইটটিতে একটি ভাল পৃষ্ঠা রয়েছে যা এটি আমার চেয়ে অনেক বেশি ভালভাবে ব্যাখ্যা করতে পারে, মাভেনের নির্ভরতা পরিচালনা এবং এতে নির্ভরতা আমদানি করার বিষয়ে নির্দিষ্ট তথ্যও রয়েছে ।


1
যদি pomএ-এর pomবি এর পিতা বা মাতা হয় , আপনি কি প্রকল্পের এ এর ​​নির্ভরতা ব্যবস্থাপনায় সুযোগের সাথে বি স্থাপন করতে পারেন import?
জেনেজ কুহার

এটি কিভাবে কাজ করে তা বোঝানোর দুর্দান্ত উত্তর, তবে কেন ?? কেন আপনি অন্যান্য নির্ভরশীলতাগুলি অন্তর্বর্তীভাবে অন্তর্ভুক্ত করতে চান না? আপনি উভয় করতে পারেন? অন্যান্য পম-আর্টিফ্যাক্ট-আইডি আমদানি করুন এবং তারপরে অন্যান্য পম-আর্টিফ্যাক্ট-আইডিটিকে নির্ভরতা হিসাবে ঘোষণা করবেন?
জুনচেন লিউ

ডি জোন সম্পর্কিত একটি নিবন্ধে আলাদা কিছু বলা হয়েছে: ... <dependencies> <dependency> <groupId>${project.groupId}</groupId> <artifactId>pomlib-lib</artifactId> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>pomlib-war</artifactId> <type>war</type> </dependency> </dependencies> </project>ডিআরওয়াই এবং স্কিনি ওয়ার
কোজ

1
@ জুনচেনলিয়ু: সুতরাং আসুন আমরা বলতে পারি যে আপনি প্রকল্প এ এর ​​কয়েকটি বৈশিষ্ট্যই ব্যবহার করছেন, যাতে আপনি কেবল সেই ট্রানজিটিভ নির্ভরতা অন্তর্ভুক্ত করতে পারেন যা এই বৈশিষ্ট্যের জন্য প্রয়োজনীয়। আপনি <dc depend>> <d dependency> এও এটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ এটি চেকআউট করুন: jdbi.org/#_getting_st সূত্র
নিতিরাজ

15

অন্য প্রকল্পে আপনার pomমতো ধরণের প্রকল্প থাকতে পারে না simple dependency। (ভাল, আপনি করতে পারেন - তবে এটি দরকারী কিছু করবে না)। কেবল একটি parent-childসম্পর্ক থাকতে পারে । এটি মূলত managing dependency through inheritance

importবিভাগে pomপ্রকার নির্ভরতার জন্য সুযোগ <dependencyManagement>আপনাকে এর সমতুল্য অর্জন করতে দেয় multiple inheritance

আপনার আলাদা হতে পারে poms- প্রতিটি managingনির্ভরশীলতার একগুচ্ছ। প্রকল্পগুলি যাতে এই পারা ব্যবহার importএই pomsএবং তারপর নির্ভরতা যে তারা সংস্করণ সম্পর্কে চিন্তা করতে ছাড়াই প্রয়োজন উল্লেখ করুন। এটি মূলত bill of materialsধারণা, যা @ ডিবি 5 দ্বারা নির্দিষ্ট লিঙ্কগুলিতে চিত্রিত হয়েছে।

এটি parent pomsজটিল বহু-মডিউল প্রকল্পগুলিকে খুব বড় এবং অযৌক্তিক না হওয়া থেকে ধরে রাখতে সহায়তা করে ।


8
তুমি কি নিশ্চিত? আমি অন্যান্য প্রকল্পে (প্যাকেজিং যুদ্ধ) নিয়মিত নির্ভরতা হিসাবে নিয়মিত পোম (নিজস্ব নির্ভরতা থাকা) রেখেছি এবং টার্গেট প্রকল্পের ওয়েবে-আইএনএফ / লিবের অন্তর্ভুক্ত পম প্রকল্পের সমস্ত নির্ভরতা পেয়েছি। এজন্যই আমি এই প্রশ্নটি জিজ্ঞাসা করছি :)
গ্রাথেথেজ

2
ধন্যবাদ @ রঘুরাম, প্রশ্নের উত্তর দেওয়ার সময় প্যারেন্ট পুমের বিকল্পটি উল্লেখ করতে ভুলে গেছেন। একটি সাধারণ নির্ভরতা হিসাবে কোনও পম টাইপ প্রকল্প থাকার পক্ষে এটি সম্ভব। মূল প্রশ্নে উল্লিখিত হিসাবে এটি গ্রুপ নির্ভরতা
DB5


5

দুটি ধারণা, অবজেক্ট-ভিত্তিক প্রোগ্রামিং দৃষ্টান্তের সাথে অনেকটা অনুরূপ, প্রশ্নের উত্তর দিতে সহায়তা করবে:

  1. DependencyManagement বিভাগে বর্তমান প্রকল্পে নির্ভরতা এবং তাদের বিবরণ ঘোষণা - উদ্দেশ্যে, হয় উত্তরাধিকার মাধ্যমে (বিস্তারিত এবং অন্যান্য প্রকল্পে পুনরায় ব্যবহার ব্যবস্থাপনার হয় পিতা বা মাতা ) অথবা আমদানি ( স্কোপ )। এটি প্রোগ্রামে ডেটা টাইপ ঘোষণা করার এবং এটি ব্যবহারের জন্য উপলব্ধ করার মতো।

  2. নির্ভরতা অধ্যায় ঐচ্ছিকরূপে নির্ভরতা অধীন ঘোষিত বিবরণ (অর্থাত, সংস্করণ, ইত্যাদি) উত্তরাধিকারী, প্রকল্পে নির্ভরতা প্রকৃত ব্যবহার সংজ্ঞায়িত dependencyManagment । এ কারণেই যদি আপনি কেবল নির্ভরতা - ম্যানেজমেন্টে রাখেন তবে আপনার নির্ভরতাগুলি হারাতে হবে । এটি এমন কোনও প্রোগ্রামে ডেটা টাইপের ভেরিয়েবল উদাহরণ ইনস্ট্যান্ট করার অনুরূপ an


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