মাভেন স্থানীয় শিল্পকর্মগুলি খুঁজে পেতে ব্যর্থ


107

মাঝেমধ্যে maven অভিযোগ করে যে একটি নির্দিষ্ট নির্ভরতা, যা স্থানীয়ভাবে নির্মিত এবং প্যাকেজ করা হয়, অন্য কোনও প্রকল্পের নির্ভরতা হিসাবে নির্মাণের সময় স্থানীয় সংগ্রহস্থলে খুঁজে পাওয়া যায় না। আমরা যেমন একটি ত্রুটি পাই:

প্রকল্প এক্স-তে লক্ষ্য নির্বাহ করতে ব্যর্থ: এক্স এক্সের নির্ভরতাগুলি সমাধান করতে পারেনি: [আর্কাইভা ​​সংগ্রহস্থলে] ওয়াই সন্ধানে ব্যর্থতা স্থানীয় সংগ্রহস্থলে ক্যাশে হয়েছিল, অভ্যন্তরের আপডেটের ব্যবধানটি শেষ না হওয়া বা আপডেটগুলি বাধ্য না করা পর্যন্ত রেজুলেশন পুনরায় চেষ্টা করা হবে না - >

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

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

দুটি জিনিস যা কাজ করে বলে মনে হচ্ছে তা হ'ল ম্যাভেন স্মার্ট না হওয়া পর্যন্ত খুব দীর্ঘ সময় অপেক্ষা করা বা স্থানীয় সংগ্রহস্থলটিকে পুরোপুরি মুছে ফেলা। সম্ভবত অপেক্ষার বিকল্পটি পূর্বোক্ত আপডেট ব্যবস্থার সাথে সম্পর্কিত।

আমরা maven 3.0.2 এবং 3.0.3 এর সাথে এই সমস্যাটি অনুভব করেছি। আমরা আর্কিভা ১.০.৩ ব্যবহার করছি (তবে আবার এটি কোনও উপাদান হওয়া উচিত নয়)। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে।


1
মাভেন কি "ওয়েটিং" এর আগে বা ঠিক কিছু আগে লগইন করছেন? অর্থাত্ এটি কি একটি অদৃশ্যযোগ্য সংগ্রহস্থলের সাথে সংযোগ স্থাপনের চেষ্টা করছে? এছাড়াও, সমস্যাযুক্ত নিদর্শনগুলি কি "-SNAPSHOT"?
noahlz

মাভেন আমার উপরে উল্লিখিত ত্রুটি ব্যতীত অন্য কোনও লগইন করে না। এবং হ্যাঁ এটি একটি স্ন্যাপশট নির্ভরতা।
ব্যবহারকারী1686620


1
দ্বিতীয় প্রকল্পটি নির্মাণের চেষ্টা করার আগে আপনি কি বিল্ড প্যাকেজটি ইনস্টল করেছেন?
খামারবায়েস

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

উত্তর:


77

স্থানীয় মাভেন রেপো ট্র্যাক করে যেখানে নিদর্শনগুলি আর্টিক্ট ডিরেক্টরিতে "_maven.repositories" নামে একটি ফাইল ব্যবহার করে এসেছে। এটি সরানোর পরে, বিল্ডটি কাজ করেছিল। এই উত্তরটি আমার জন্য সমস্যার সমাধান করেছে।


26
আমার জন্য এটি "_remote.repositories" নামে একটি ফাইল ছিল। আমি এটি সরিয়েছি এবং এটি কাজ করে! কৌশল জন্য ধন্যবাদ!
পেরবেলিনিও

2
_রেমোট.রেপোসিটরিজ নামের ফাইলটিও উপস্থিত ছিল। আমাদের নেক্সাসের নেটওয়ার্ক সংযোগ থাকা বন্ধ হয়ে যাওয়ার পরে এটি আমার কাছে ঘটেছিল যাতে এটি নির্ভরতা অর্জন করতে পারে না
ক্যাবিজি99

1
প্রদত্ত সমাধান কাজ করে। যাইহোক, আমি আগ্রহী কেন এই সমস্যাটি মোটেই ঘটছে। কেউ কি আমাকে দ্রুত ব্যাখ্যা দিতে পারে? আমাকে কি আলাদাভাবে কিছু করতে হবে?
জানোথান

আপনি যদি এই উত্স চেকটি একবার বাইপাস করতে চান (মেটাফাইলগুলি মোছা না করে), aether.enhancedLocalRepository.trackingFilename=some_dummy_file_nameনির্ভরতা সমাধান প্রক্রিয়াতে যাওয়ার চেষ্টা করুন ; সহজ উপায় হ'ল ইনোভেশন কমান্ডে একটি -D সিস্টেমের সম্পত্তি যুক্ত করা।
জনক বান্দারা

জনাথন আইএমও উত্তরটির লিঙ্কটি একটি দুর্দান্ত ব্যাখ্যা প্রদান করে :)
জনক বান্দারা

39

এখানে বিকল্পগুলি আমার পক্ষে কার্যকর না হওয়ায় আমি কীভাবে এটি সমাধান করেছি তা ভাগ করে নিচ্ছি:

আমার প্রকল্পের একটি প্যারেন্ট প্রজেক্ট রয়েছে (নিজস্ব pom.xML সহ) যার অনেকগুলি শিশু মডিউল রয়েছে যার মধ্যে একটি (এ) অন্য সন্তানের (বি) এর উপর নির্ভরশীলতা। আমি যখন এ-তে চেষ্টা করেছি তখন mvn packageএটি কার্যকর হয়নি কারণ বি সমাধান করা যায় নি।

mvn install অভিভাবক ডিরেক্টরিতে এক্সিকিউটিং কাজটি করেছে। এর পরে, আমি এ এর mvn packageভিতরে করতে পারি এবং কেবল তখন এটি বি খুঁজে পেতে পারে


3
ধন্যবাদ! এটি আমাকে পাগল করছে এমভিএন ক্লিন প্যাকেজ jboss-as: আমি যখন একটি একক লাইনে এক্সিকিউট করেছিলাম তখন মোতায়েন করা কাজ করছিল, কিন্তু যখন আমি আলাদাভাবে এগুলি না করেছিলাম।
PMorganCA

18

এমনকি অফলাইন মোডে, ম্যাভেন নির্ভরতার জন্য যদি _ রেমোট.রেপোজিটরিগুলি চিহ্নিত করে থাকে তবে দূরবর্তী সংগ্রহস্থলগুলি পরীক্ষা করবে। আপনার যদি অফলাইন মোডে পরিচালনা করতে হয় তবে আপনার এই ফাইলগুলি মুছতে হবে।

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

আমি এই কৌশলটি একটি বিল্ড সার্ভারে ব্যবহার করেছি যা ওয়েব থেকে সংযোগ বিচ্ছিন্ন। আমাদের এটিতে সংগ্রহস্থল স্থানান্তর করতে হবে, মার্কার ফাইলগুলি মুছতে হবে এবং তারপরে অফলাইন মোডে চালাতে হবে।

লিনাক্স / ইউনিক্সে আপনি এইভাবে দূরবর্তী সংগ্রহস্থল চিহ্নিতকারী ফাইলগুলি মুছতে পারেন:

cd ~/.m2
find . -name "_remote.repositories" -type f -delete

1
এই সমাধানটি আমার পক্ষে কাজ করেছিল, নির্ভরতার জন্য আমি অন্য কম্পিউটার থেকে অনুলিপি করেছিলাম যা কেন্দ্রীয় ভাণ্ডারে পাওয়া যায় না। কমান্ডটি যদিও কয়েকটি অক্ষর মিস করে। এখানে পূর্ণ আদেশ: অনুসন্ধান করুন। -নাম "_remote.repositories" -প্রকার -f -ডিলেট
হান্স ডেরাগন

2
অথবা, মোছার পরিবর্তে, আপনি প্রক্রিয়াটি পেরিয়ে _remote.repositoriesফাইলটির দিকে নজর না দেওয়ার জন্য মাভেনকে "বিভ্রান্ত" করতে সক্ষম হবেন -Daether.enhancedLocalRepository.trackingFilename=some_dummy_file_name। (কোনও আসল মাভেন বিল্ড চেষ্টা করে দেখেনি, তবে প্রোগ্রামটিকে
মাভেনকে ডাকার

1
আমি মাভেনের দ্বারা সুনির্দিষ্ট নির্ভরতা (জারস) খুঁজে পাওয়া যায় না এবং এটি (<10) এর সাথে ম্যানেজ করা যায় সেহেতু আমি এটি করেছিলাম এবং সুনির্দিষ্ট নির্ভরতা (জারস) মুছে ফেললাম। এটি বর্তমানে একটি দুর্গম নেক্সাসকে উপলভ্য নয় এমন একটি ভুল কনফিগের কারণে হয়েছিল (যেমন আমি বুঝতে পেরেছি ..)। সুতরাং মুছে ফেলার জন্য সমস্ত রেপো ঝুলানোর কোনও প্রকৃত প্রয়োজন নেই। যাইহোক এই সমাধানটি দিনটি বাঁচিয়েছিল। এটা আমার জন্য কাজ করে।
দিয়েগো 1974

9

যখন আমার সাথে এটি ঘটেছিল, কারণ এটি আমি কোনও টেমপ্লেট থেকে আমার সেটিংস.এক্সএমএল অনুলিপি অনুলিপি করেছিলাম এবং এটিতে ফাঁকা <localRepository/>উপাদান রয়েছে। এর অর্থ হ'ল নির্ভরতাগুলি সমাধান করার সময় কোনও স্থানীয় সংগ্রহস্থল ব্যবহার করা হয়নি (যদিও আপনার ইনস্টল করা শিল্পকর্মগুলি এখনও ডিফল্ট স্থানে রাখা হয় না)। যখন আমি <localRepository>${user.home}\.m2\repository</localRepository>এটি প্রতিস্থাপন করব তখন এটি কাজ করা শুরু করল।

<localRepository>${user.home}/.m2/repository</localRepository>আমি মনে করি * নিক্সের জন্য এটি হবে ।


6
r. {user.home} \। m2 \ সংগ্রহস্থলটি ডিফল্ট হয় তাই খালি ট্যাগ সরানো একইভাবে কাজ করা উচিত।
লুইস মুউজ

9

মাভেন মনে আছে যখন এটি কিছু না পেয়েছিল। চাবিটি হ'ল "রেজোলিউশনটি পুনরায় চেষ্টা করা হবে না যতক্ষণ না অভ্যন্তরের আপডেটের ব্যবধানটি শেষ হয়ে যায় বা আপডেটগুলি বাধ্য না করা হয় ->"

দ্রুত সমাধানটি হ'ল সমস্যাটি সম্পর্কিত আর্টিক্যাক্টের জন্য আপনার স্থানীয় "সংগ্রহশালা" উপ-ডিরেক্টরিটি মুছে ফেলা - ধরে নিলে আপনি এটির সাথে সমস্যাটি স্থির করেছেন। :)

mvn -U রিমোট রিপোজিটরি থেকে আপডেট জোর করে - আবার ধরে নিবেন, আপনি এখন আর্টেফ্যাক্টের সাহায্যে রিমোটকে জনবহুল করেছেন।


2

সব ধরুন। যখন এখানে উল্লিখিত সমাধানগুলি কাজ করে না (আমার ক্ষেত্রে হ্যাশ), কেবল '.m2' ফোল্ডার / ডিরেক্টরি থেকে সমস্ত সামগ্রী মুছুন এবং করুন mvn clean install


2

আপনি যদি <repositories/>আপনার pom.xml এ সংজ্ঞায়িত করেছেন তবে আপাতদৃষ্টিতে আপনার স্থানীয় ভান্ডারটিকে উপেক্ষা করা হবে।


1

এমনকি আমি এই সমস্যার মুখোমুখি হয়েছি এবং এটি 2 উপায়ে সমাধান করেছি:

1) আপনার আইডিইতে প্রকল্পটি নির্বাচন করুন এবং সমস্ত প্রকল্পগুলি সাফ করুন তারপরে প্রকল্পে ডান ক্লিক করে সমস্ত ম্যাভেন নির্ভরতা ইনস্টল করুন -> ম্যাগনে যান এবং প্রকল্পের নির্ভরতাগুলি একই ইনস্টল করতে একবারে সমস্ত প্রকল্প নির্বাচন করুন। এটি হয়ে গেলে নির্দিষ্ট প্রকল্পটি চালান

2) অন্যথায় আপনি যা করতে পারেন তা হ'ল আপনি যে নির্ভরতাগুলির জন্য ত্রুটি পাচ্ছেন তার জন্য pom.xML দেখুন এবং সেই সমস্ত নির্ভরশীল প্রকল্পটি "এমভিএন ক্লিন ইনস্টল করুন" এবং আপনি যে সমস্যার সাথে সমস্যার মুখোমুখি হচ্ছেন বর্তমান প্রকল্পের মাভেন নির্ভরতাগুলি ইনস্টল করুন। এর মাধ্যমে স্থানীয় প্রকল্পের নির্ভরতা তৈরি হবে এবং জারে তৈরি হবে।


0

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


0

মাভেনের চারপাশে আমি যে ত্রুটিগুলি পেয়েছি তার মধ্যে একটি হ'ল আমি যখন আমার ডিরেক্টরিগুলি.xml ফাইলটি ভুল ডিরেক্টরিতে রাখি। এটি আপনার ব্যবহারকারীর হোম ডিরের অধীনে .m2 ফোল্ডারে থাকতে হবে। এটি সঠিক জায়গায় রয়েছে কিনা তা নিশ্চিত করতে পরীক্ষা করুন (সেটিংস-সুরক্ষা.এক্সএমএল সহ আপনি যদি এটি ব্যবহার করেন) are


0

আমি DependencyResolutionExceptionযখন শেল স্ক্রিপ্টের মাধ্যমে স্থানীয় শিল্পকর্মগুলি ইনস্টল করেছি তখন উবুন্টু লিনাক্সে ছিল । সমাধানটি হ'ল স্থানীয় শিল্পকর্মগুলি মুছুন এবং তাদের আবার "ম্যানুয়ালি" ইনস্টল করুন - mvn install:install-fileটার্মিনালের মাধ্যমে কল করা ।


0

এটি এর httpপরিবর্তে আমার থাকার কারণে এটি হয়েছিল https:

<repository>
    <id>jcenter</id>
    <name>jcenter-bintray</name>
    <url>https://jcenter.bintray.com</url>
</repository>

0

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


-1

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


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