আপনি কিভাবে আপাচি মাভেনের ক্যাশে সাফ করবেন?


212

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

মাভেনকে সর্বদা তৈরি করা উচিত যে স্থানীয় নিদর্শনগুলির একটি পরিষ্কার বিল্ড ট্রিগার করতে বাধ্য করার জন্য এই ক্যাশেটি পরিষ্কার করার কোনও উপায় আছে?

বিশেষত, যুদ্ধের প্লাগইন সহ আমাদের একটি ওয়েব অ্যাপ তৈরির সমস্যা রয়েছে। ম্যাভেন সংস্করণ 3.0.3। ওয়ার প্লাগইন সংস্করণটি 2.1.1।


2
আপনি কি -Uপতাকাটি ব্যবহার করেছেন যা নিদর্শনগুলি আপডেট করবে?
আমির রামিনফার

2
আরো বিস্তারিত দিতে পারেন? নির্ভরশীলরা কি যুদ্ধে আপডেট হচ্ছে না? যদি তা হয় তবে নির্ভরশীলরা কি এসএনএপশট সংস্করণ রাখে?
রঘুরাম

এটি কি কোনও মাল্টিমিডুল প্রকল্প? আপনি কি ডিপেন্ডেন্ডেন্ট মডিউলগুলির সংস্করণ নম্বর পরীক্ষা করেছেন? আপনি কি পুনরুত্পাদন করতে পারেন? mvn clean installনতুন সংগ্রহশালা স্থানীয় সংগ্রহস্থলে রাখুন?
পালাকসিন্ট

@ মেট্রয়েডফ্যান ২০০২ আমরা কী দয়া করে এখানে একটি নির্দিষ্ট উত্তর পেতে পারি? অথবা আপনি নিজে থেকে কোনও খুঁজে পেলে একটি সমাধান লিখতে পারেন।
নমন

1
mvn clean install -Dmaven.repo.local=/alternate/repo/location
গায়ান ওয়েরাকুট্টি

উত্তর:


225

c:\Users\<username>\.m2\repositoryহাতে থেকে শিল্পকর্মগুলি (বা সম্পূর্ণ স্থানীয় রেপো) মুছুন ।


4
ইতিমধ্যে চেষ্টা করেছিলাম, কাজ হয়নি। যদিও পরামর্শ জন্য ধন্যবাদ।
MetroidFan2002

3
দেখে মনে হচ্ছে, পুনঃসূচনা হওয়ার পরেও প্রচুর The action can't be completed because the folder or file in it is open in another program. Close the folder or file and try again.
খাঁটি

1
নোট করুন যে ফোল্ডারের অবস্থানটি আপনার সিস্টেমে আলাদা হতে পারে
মাভেন

9
@ লিটিলিটাস27 এখানে একই, কেবল ~ / .m2 / সংগ্রহস্থলটি মুছে ফেলা হয়নি, mvn dependency:purge-local-repositoryশেষ পর্যন্ত কাজ করেছেন
qbert65536

হ্যাঁ এটি আমার জন্য 100% কাজ করেছে - উইন্ডোজ 10 কোনও প্রশাসক হিসাবে প্রশাসক হিসাবে কর্পোরেট নেটওয়ার্কে উইন্ডোজ
গ্রিম ফিলিপস

176

স্থানীয় ক্যাশে পরিষ্কার করতে নির্ভরতা প্লাগ-ইন ব্যবহার করার চেষ্টা করুন।

  1. mvn dependency:purge-local-repository: এটি স্থানীয় সংগ্রহস্থল ফাইলগুলি মুছে ফেলার একটি প্রচেষ্টা কিন্তু জিনিসগুলি সরানোর পরে এটি সর্বদা চলে যায় এবং স্থানীয় সংগ্রহস্থলটি পূরণ করে।
  2. mvn dependency:purge-local-repository -DreResolve=false: এটি নির্ভরতাগুলির পুনরায় সমাধানের বিষয়টি এড়িয়ে চলে তবে মাঝে মধ্যে নেটওয়ার্কে যেতে পারে বলে মনে হয়।
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false: এটি Paweł Prażak যোগ করেছেন এবং ভাল কাজ করছে বলে মনে হচ্ছে। আপনি যদি স্থানীয় রেপো খালি করতে চান তবে আমি তৃতীয়টি ব্যবহার করব, এবং প্রথমটি যদি আপনি কেবল স্থানীয় রেপো ফেলে দিতে চান এবং আবার নির্ভরতা পেতে চান।

4
তাদের মধ্যে পার্থক্য কি?
পিটার ডি বাই

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

একটি লিনাক্স সিস্টেমে কমান্ড লাইন থেকে। আপনাকে এমভিএন ইনস্টল করতে হবে। maven.apache.org/install.html
ব্রায়ান সি

আমি যুক্ত করব যে আপনি একটি অতিরিক্ত প্যারামিটার দিয়ে নির্দিষ্ট গোষ্ঠীগুলি / শৈলীগুলিকে লক্ষ্য করতে পারেন। এই উত্তরটি আমি অবশ্যই খুঁজছিলাম (বিকল্প 3)। এই অতিরিক্ত প্যারামিটারটি এখানে ::: এমভিএন নির্ভরতা: শুদ্ধ-স্থানীয়-রিপোজিটরি -DmanualIncolve = "myGroupId" -DsnapshotsOnly = true -DactTransitively = false -DreResolve = false
গ্রানাডা কোডার

আমি স্থানীয় সংগ্রহস্থলের মধ্যে থাকা সমস্ত সামগ্রী মুছে ফেলার উদ্দেশ্যে তৃতীয় বিকল্পটি চেষ্টা করেছিলাম , তবে এটি কার্যকর হয় না - যতক্ষণ না এই লক্ষ্য অর্জনের অনন্য উপায়টি হ'ল ডিরেক্টরিটির সমস্ত সামগ্রী ম্যানুয়ালি মুছে ফেলা হয়। আমার কাছে অবস্থানের থেকে পৃথক স্থানে স্থানীয় সংগ্রহস্থল রয়েছে <User_Name>/.m2। এটি কারণ হবে কিনা তা নিশ্চিত নয়।
ম্যানুয়েল জর্ডান

13

আপনার নিজের সংগ্রহস্থলের জন্য আপডেট পোলিসি সেটিংস পরীক্ষা করে / পরিবর্তন করেছি settings.xml

এই উপাদানটি উল্লেখ করে যে কত ঘন ঘন আপডেট হওয়া উচিত। মাভেন স্থানীয় পিওএমের টাইমস্ট্যাম্পকে (একটি সংগ্রহস্থলের মভেন-মেটাডেটা ফাইলটিতে সজ্জিত) দূরবর্তী সাথে তুলনা করবে। পছন্দগুলি হ'ল: সর্বদা, প্রতিদিন (ডিফল্ট), অন্তর: এক্স (যেখানে এক্স মিনিটের মধ্যে পূর্ণসংখ্যা হয়) বা কখনই নয়।

এটি সেট করার চেষ্টা করুন always


1
এটিকে মোকাবেলা করার জন্য সম্ভাব্য সহায়তা ... <updatePolicy>আমার পোম.এক্সএমএল-এ আমার নেই, তবে আছে<snapshotPolicy>
আল লেলোপাথ

আপডেটপলিসি আমার সেটিংসে সর্বদা সর্বদা সেট করা আছে। xML।
মাস্টারজয় 2

11

আমি নিম্নলিখিত করতে হবে:

mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end

পতাকাগুলি ম্যাভেনকে বলে দেয় যে নির্ভরতাগুলি সমাধান করার চেষ্টা করবেন না বা নেটওয়ার্ককে আঘাত করবেন না। আপনি স্থানীয়ভাবে যা দেখতে পান তা মুছুন।

এবং ভাল পরিমাপের জন্য, ত্রুটিগুলি উপেক্ষা করুন ( --fail-at-end) শেষ অবধি। এটি কখনও কখনও এমন প্রকল্পগুলির জন্য দরকারী যেগুলি কিছুটা নির্ভরশীলতার সেট তৈরি করেছে বা কিছুটা বিশৃঙ্খল অভ্যন্তরীণ সংগ্রহস্থলের উপর নির্ভর করবে (এটি ঘটে))


1
এই ধরণের ক্লিনআপের জন্য কেবল স্থানীয় ক্যাশে ফোল্ডারটি মুছে ফেলা কি যথেষ্ট নয়?

1
আপনি যদি প্রতিটি একক ট্রানসিটিভ নির্ভরতা জানতেন তবে আপনি করতে পারেন। তবে এটি ক্লান্তিকর হয়ে ওঠে (বা আমরা কেবল পুরো ক্যাশেটি মুছে ফেলতে পারি, তবে এটি মেভেনকে প্রশ্নের সাথে সম্পর্কিত নিদর্শনগুলির সাথে সম্পর্কিত নয় এমন জিনিসগুলির জন্য সবকিছু আবার ডাউনলোড করতে বাধ্য করবে)) এটি সমস্ত পরিস্থিতির সুনির্দিষ্টতার উপর নির্ভর করে।
luis.espinal

6

এটি স্প্রিং টুল স্যুট বনাম ৩.১.০. রিলিজ এ কাজ করে, তবে আমি অনুমান করছি যে এটি গ্রহপসেও উপলভ্য।

ডিরেক্টরিতে হাতে হাতে নিদর্শনগুলি মুছে ফেলার পরে (উপরে প্যালাসিন্ট দ্বারা উল্লিখিত) নীচের কাজগুলি /username/.m2করে ফাইলগুলি পুনরায় সূচীকরণ করুন :

যাও:

  • Windows->Preferences->Maven->User Settings তালিকা.

পাঠ্য বাক্সের Reindexপাশের বোতামটি ক্লিক করুন Local Repository। "প্রয়োগ করুন" তারপরে "ঠিক আছে" ক্লিক করুন এবং আপনার কাজ শেষ।


2

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

আপনি যদি কোনও মুভমেন্ট পর্যায়ে এই মুছে ফেলা এম্বেড করতে চান, উদাহরণস্বরূপ cleanআপনি maven-clean-pluginসেটিংসের মাধ্যমে ব্যবহার করতে পারেন এবং সংগ্রহস্থলটি অ্যাক্সেস করতে পারেন , উদাহরণস্বরূপ:

 <plugin>
    <inherited>false</inherited>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>clean</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo>Base clean is attached to deleting local maven cache</echo>
                    <echo>${settings.localRepository}</echo>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <inherited>false</inherited>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <filesets>
            <fileset>
                <directory>${settings.localRepository}</directory>
            </fileset>
        </filesets>
    </configuration>
</plugin>

2

mvn dependency:purge-local-repository -DactTransitively=false -Dskip=trueমডিউলগুলির মধ্যে একটি হিসাবে আপনার মাভেন প্লাগইন থাকলে ব্যবহার করুন । অন্যথায় মাভেন তাদের পুনরায় সংযোগ দেওয়ার চেষ্টা করবে, এভাবে আবার নির্ভরতাগুলি ডাউনলোড করে download


1
এটি প্রকৃতপক্ষে আমি যা খুঁজছিলাম, এটি কেবল একটি টাইপো রয়েছে (এড়িয়ে যাওয়ার জন্য কোনও ড্যাশ অনুপস্থিত): এমভিএন নির্ভরতা: খাঁজ-লোকাল-রিপোজিটরি -ড্যাক্ট ট্রান্সটিভালি = মিথ্যা -ডস্কিপ = সত্য
শোগুরেন

0

আমারও একই সমস্যা ছিল এবং এটি করার জন্য আমি শেলের একটি ওয়ান-লাইন লিখেছিলাম।

rm -rf $(mvn help:evaluate -Dexpression=settings.localRepository\
                       -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -B \
                       -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn | grep -vF '[INFO]')/*

আমি এটি ওয়ান-লাইনার হিসাবে করেছি কারণ যখনই আমার প্রয়োজন হবে কেবল এটিকে চালানোর জন্য জেনকিনস-প্রকল্পের দরকার ছিল, সুতরাং আমাকে স্টাফগুলিতে লগ ইন করতে হবে না ইত্যাদি। যদি আপনি নিজের জন্য এটি শেল-স্ক্রিপ্টের অনুমতি দেন, আপনি এটি ক্লিনার লিখতে পারেন:

#!/usr/bin/env bash
REPOSITORY=$(mvn help:evaluate \
  -Dexpression=settings.localRepository \
  -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN \
  -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
  --batch-mode \
  | grep -vF '[INFO]')

rm -rf $REPOSITORY/*

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

এটি কিছুটা মজাদার, তবে এটি ব্যবসায়ের একটি শালীন উপায়, আইএমও।


-3

সুতরাং কিছু কমান্ড রয়েছে যা আপনি পরিষ্কারের জন্য ব্যবহার করতে পারেন

 1. mvn clean cache   
 2. mvn clean install 
 3. mvn clean install -Pclean-database

.m2 থেকে সংগ্রহস্থল ফোল্ডার মোছা সাহায্য করতে পারে।


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