মাভেনের স্থানীয় সংগ্রহস্থলটির অবস্থান সিএলআই প্যারামিটার হিসাবে উল্লেখ করা হচ্ছে


131

ম্যাভেন কমান্ড লাইনে আর্গুমেন্ট হিসাবে স্থানীয় মাভেন সংগ্রহস্থলের অবস্থান নির্ধারণ করা কি সম্ভব?

জিনিসটি হ'ল আমি এতে ডিফল্টটি ব্যবহার করি না ~/.m2/repository। তবে আমি কিছু প্রকল্প যা তার নিজস্ব সেটিংস দিয়ে নির্মিত হচ্ছে তা পরীক্ষা করে দেখেছি -s settings.xml। সেটিংস.এক্সএমএল আমার স্থানীয় সংগ্রহস্থল নির্দিষ্ট করে না, তাই মাভেন ~/.m2/repositoryআবার ব্যবহার করে ... আমি <localRepository>প্রকল্পের সেটিংসে কোনও উপাদান যুক্ত না করেই একটি ডিফল্ট স্থানীয় সংগ্রহস্থল অবস্থানটি ব্যবহার করতে চাই x

আমি চেষ্টা করেছিলাম

  • -DlocalRepository="..."
  • $mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
  • -Dsettings.localRepository

কিন্তু এই বিকল্পগুলির কোনওটিই কাজ করে না।

সুতরাং আমি মনে করি আমাকে সিদ্ধান্ত নিতে হবে আমি তৃতীয় পক্ষের সেটিংস.এক্সএমএল সংশোধন করব বা আমার স্থানীয় রেপো এতে স্থানান্তর করব ~


স্পষ্টতই এটি আপনার দোষ নয়, তবে মাভেন প্রকল্পগুলি একটি সরবরাহ করা উচিত নয় settings.xml। দেখুন maven.apache.org/guides/mini/guide-configuring-maven.html
oberlies

উত্তর:


258

খাঁটি সম্পত্তি ব্যবহার করুন maven.repo.local:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

কোনও পরিবর্তন করার settings.xmlপ্রয়োজন নেই।


10
স্থানীয় সংগ্রহস্থলটি অবশ্যই একটি নিখুঁত পাথ, maven.apache.org/guides/mini/guide-configuring-maven.html হতে হবে ।
luka5z

3
উইন্ডোজে ma mvn -D "maven.repo.local" =% USER_Home% /। আমার / অন্যান্য / সংগ্রহস্থল পরিষ্কার ইনস্টল করুন `
ইগর ব্লজাহিন

আমি কি একই জিনিস অর্জনের জন্য পরিবেশের পরিবর্তনশীল সেট করতে পারি?
পাউডার366

@ পাউডার no no no নং, আফাইক
পেট্র কোজেলকা

Maven-3.6.3 ব্যবহার করে স্থানীয় সংগ্রহস্থল দির আপেক্ষিক পথ হিসাবে কাজ করে (কমপক্ষে MacOS এ)
এড র‌্যান্ডাল

8

গিট জন্য:

alias mvn='mvn "-Dmaven.repo.local=$(git rev-parse --show-toplevel)/.m2/repository"'

এটি প্রতিটি গিট সংগ্রহস্থলে একটি পৃথক মাভেন সংগ্রহশালা ব্যবহার করে


2

এক ধরণের হ্যাকি উপায় যা কাজ করবে তা হ'ল:

  1. <localRepository>${m2.localRepository}</localRepository>আপনার সেটিংসে যোগ করুন। এক্সএমএল
  2. আপনার mvn.sh বা mvn.bat এ, এক্সিকিউট হওয়া কমান্ডটিতে "$ @" এর -Dm2.localRepository=<full path to home dir>/.m2/repository আগে যুক্ত করুন । এটি আপনার ডিফল্ট স্থানীয় রেপো যেখানে থাকবে সেখানেই তৈরি করবে।
  3. এখন আপনি ব্যবহার করতে পারেন mvn -Dm2.localRepository=... <phases/goals>। আপনার কমান্ড লাইন সিস্টেমের সম্পত্তি mvn স্ক্রিপ্টের পরে কমান্ড লাইনে যুক্ত হওয়ার কারণে এটি অগ্রাধিকার গ্রহণ করবে। (কমপক্ষে আমি নিশ্চিত যে এটি উইন্ডো এবং লিনাক্স উভয় ক্ষেত্রেই সেভাবে কাজ করে তবে পরীক্ষাগুলি বলবে tell)

এটি সাহায্য করে না, আমি এমভিএন স্ক্রিপ্টে "$ @" এর আগে -Dm2.localRepository = "কাস্টম" যুক্ত করেছি, এখনও ~ / .m2 / সংগ্রহস্থল ব্যবহার করি ... তখন আমি চালানোর সময় -Dm2.localRepository = "কাস্টম" অন্তর্ভুক্ত করেছি v এমভিএন, এখনও ~ / .m2 / সংগ্রহস্থল ব্যবহার করে ... কেবলমাত্র সেটিং.এক্সএমএল-এ স্থানীয় রিপোসিটরি উপাদান ছাড়া এটি পরিবর্তন করার কোনও উপায় নেই
লিসাক

@ লিসাক: আপনি কি স্থানীয়রেপোসিটরি উপাদানটি সেটিংস.এক্সএমএল যুক্ত করার পদক্ষেপ 1 করেছিলেন? আমি এটি পরীক্ষা করেছি এবং এটি কাজ করে, আপনি আসলে mvn স্ক্রিপ্টে 'alias' ওরফে ব্যবহার করতে পারবেন না। আপনাকে একটি নিখুঁত পথ রাখতে হবে, যদিও আপনি সম্ভবত এটির জন্য আরও কিছু শেল / ব্যাচের স্ক্রিপ্ট কৌশল করতে পারেন।
রায়ান স্টুয়ার্ট

এটি কাজ করে, তবে সত্যই আমার ব্যাখ্যা নেই ... আমি যদি পদক্ষেপ 2 ব্যতীত $ এম 2 হাত / কনফারেন্স / সেটিংস.এক্সএমএলগুলিতে স্থানীয় রেপোসটরিটি ঘোষণা করি তবে এটি -s সেটিংস.এক্সএমএল দ্বারা বর্ধিত এবং এটি কাজ করে না, যদিও পদক্ষেপ 2 সহ এটি কাজ করে ... তবে R এম 2হোম / কনফিড / সেটিংস.এক্সএমএল-এ স্থানীয় রিপোসিটোরি ছাড়া কেবল দ্বিতীয় পদক্ষেপ 2 টি কাজ করে না ... এটির কাজ করার জন্য 1,2 দুটি ধাপ অবশ্যই প্রয়োগ করতে হবে এবং আমি এমনকি $ এমভিএন এর মাধ্যমে অবস্থান পরিবর্তন করতে পারি -Dm2.localRepository = .. ধন্যবাদ রায়ান
lisak
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.