শিল্পকর্মগুলি পুনরুদ্ধার করার জন্য আমি কীভাবে মাভেনকে আমার স্থানীয় সংগ্রহস্থল ব্যবহার করতে বলি?


102

আমি ম্যাক ইয়োসেমাইটে জাভা 8 এর সাথে ম্যাভেন 3.3.3 ব্যবহার করছি। আমার একটি মাল্টি-মডিউল প্রকল্প রয়েছে।

    <modules>
            <module>first-module</module>
            <module>my-module</module></modules>

যখন আমি আমার একটি শিশু মডিউল তৈরি করি, উদাহরণস্বরূপ, উপরের থেকে "আমার-মডিউল", "এমভিএন ক্লিন ইনস্টল" ব্যবহার করে, বিল্ডটি আমার ~ / .m2 এ আমি সংজ্ঞায়িত করেছি এমন একটি রিমোট রেপোজিটরি থেকে শিশু মডিউল শিল্পকর্মগুলি ডাউনলোড করার চেষ্টা করে /settings.xML ফাইল। আউটপুট নীচে

[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building my-module 87.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://download.java.net/maven/2/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml (788 B at 0.9 KB/sec)
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-20151104.200545-4.pom

দূরবর্তী সংগ্রহস্থল থেকে ডাউনলোড করার চেষ্টা করার আগে আমি কীভাবে মাভেনকে আমার স্থানীয় ~ / .m2 / সংগ্রহস্থলটি পরীক্ষা করতে বাধ্য করব? নীচে আমি যেখানে আমার remote / .m2 / settings.xML ফাইলে আমার দূরবর্তী সংগ্রহগুলি সংজ্ঞায়িত করেছি ...

<profile>
    <id>releases</id>
    <activation>
        <property>
            <name>!releases.off</name>
        </property>
    </activation>
    <repositories>
        <repository>
            <id>releases</id>
            <url>https://my.remoterepository.com/nexus/content/repositories/releases/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>
<profile>
    <id>snapshots</id>
    <activation>
        <property>
            <name>!snapshots.off</name>
        </property>
    </activation>
    <repositories>
        <repository>
            <id>snapshots</id>
            <url>https://my.remoterepository.com/nexus/content/repositories/snapshots/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
</profile>

সম্পাদনা: উত্তরের প্রতিক্রিয়াতে বলে যে ডাউনলোডটি ঘটে যখন নিদর্শনগুলি না থাকে, নীচে টার্মিনাল আউটপুট যা আমি প্রমাণ করি যে ফাইলটি আমার রেপোতে ছিল কিন্তু মাভেন যেভাবেই ডাউনলোড করার চেষ্টা করছে ...

Daves-MacBook-Pro-2:my-module davea$ ls -al ~/.m2/repository/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-SNAPSHOT.jar 
-rw-r--r--  1 davea  staff  10171 Nov  5 10:22 /Users/davea/.m2/repository/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-SNAPSHOT.jar
Daves-MacBook-Pro-2:my-module davea$ mvn clean install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.mainco.subco:my-module:jar:87.0.0-SNAPSHOT
[WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.apache.maven.plugins:maven-antrun-plugin @ org.mainco.subco:my-module:[unknown-version], /Users/davea/Documents/sb_workspace/my-module/pom.xml, line 678, column 12
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building my-module 87.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://download.java.net/maven/2/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml (788 B at 0.8 KB/sec)
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-20151106.043202-8.pom
Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-   module-87.0.0-20151106.043202-8.pom (3 KB at 21.9 KB/sec)
Downloading: http://download.java.net/maven/2/org/mainco/subco/subco/87.0.0-SNAPSHOT/maven-metadata.xml
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/subco/87.0.0-SNAPSHOT/maven-metadata.xml

4
ম্যাভেন করে একটি দূরবর্তী সংগ্রহস্থল থেকে একটি হস্তনির্মিত বস্তু ডাউনলোড করতে চেষ্টা করার আগে আপনার স্থানীয় সংগ্রহস্থলের চেক করুন। আপনি কি নিশ্চিত যে আপনি এই বিল্ডটি চেষ্টা করার আগে আপনার স্থানীয়দের কাছে এই নিদর্শনগুলি ছিল? আপনি এখনই আপনার স্থানীয় সংগ্রহস্থলটি পরিদর্শন করতে পারেন এবং যাইহোক আবার অন্য বিল্ড চেষ্টা করতে পারেন। এছাড়াও, আপনার স্থানীয় সংগ্রহস্থলটি কোথায় রয়েছে তা আপনি নির্দিষ্ট করতে পারেন settings.xml( এখানে দেখুন )।
মাইস্টেরাকস

যদিও আমি আমার সেটিংস.এক্সএমএল ফাইলে আমার সংগ্রহস্থলটি নির্দিষ্ট করে নিছি, তবুও এটি ডিফল্ট যা মাভেন আমার জন্য সেট করেছেন - os / .m2 / সংগ্রহস্থল। এটি ডিফল্ট থাকা সত্ত্বেও আমাকে কি তা উল্লেখ করতে হবে?
ডেভ

আমার জন্য আমার স্থানীয় সংগ্রহস্থলগুলিতে অন্যান্য ফাইল রয়েছে, যেমন * .sha1 বা * .lastUpdate। * .jar এবং * .pom ব্যতীত অন্য ফাইলগুলি মুছুন মাভেনকে রিমোট রিপোজিটরি থেকে পুনরায় ডাউনলোড করতে বাধা দেবে
হারুন

উত্তর:


47

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

নোট করুন যে এই আচরণটি updatePolicyসংগ্রহস্থল কনফিগারেশনের (যা dailyস্ন্যাপশট সংগ্রহস্থলের জন্য ডিফল্টরূপে) নির্দেশ দ্বারা নিয়ন্ত্রিত হয় ।


16
কনসোল কমান্ড আর্গুমেন্ট দ্বারা এটি "ওভাররাইট" করা সম্ভব? লাইক: এমভিএন ক্লিন ইনস্টল করুন -FORCE_COMMAND
Naxos84

21
"খুব পুরানো" মানে কী? এটি যে সর্বাধিক স্ন্যাপশট এটি খুঁজে পেতে পারে তা স্থানীয় বা দূরবর্তী কিনা? এটি অবশ্যই ভয়ঙ্কর আচরণ হবে। আমি যদি কেবল একটি স্ন্যাপশট তৈরি করেছি, তবে সত্যই আমি এটি ব্যবহার করতে চাই, সিআই বিল্ডটি কেবল একটি মুহূর্ত পরে তৈরি করে নি।
টম কোয়ারেন্ডন

"খুব পুরানো" এর অর্থ সম্পর্কে আরও ব্যাখ্যা করুন?
ô কং বং

34

ব্যবহার করুন mvn --helpএবং আপনি বিকল্প তালিকা দেখতে পারেন।

মত একটি বিকল্প আছে -nsu,--no-snapshot-updates Suppress SNAPSHOT updates

সুতরাং ব্যবহার কমান্ড mvn install -nsuস্থানীয় সংগ্রহস্থলগুলির সাথে কম্পাইল করতে বাধ্য করতে পারে।


10
আপনি -o"অফলাইন" খাঁটি আচরণের জন্যও ব্যবহার করতে পারেন
শান

8
-Nsu বিকল্পটি mvn কে চেষ্টা করতে এবং আর্টফ্যাক্টটি দূর থেকে ডাউনলোড করতে ব্যর্থ হয় না যদি এটি আর্টিকটটি স্থানীয়ভাবে তৈরি এবং ইনস্টল করার সময় স্থানীয় বিল্ড ব্যবহারের পরিবর্তে এখনও ডাউনলোড না করা হয়। -
ব্যবহারকারী 1767316


16

মাভেনকে কেবলমাত্র আপনার স্থানীয় রেপো ব্যবহার করতে বাধ্য করার জন্য , আপনি এটি চালাতে পারেন । ম্যাভেনকে আপনাকে "অফলাইনে" কাজ করতে বলে এবং এটি নেটওয়ার্ক থেকে দূরে থাকবে Themvn <goals> -o-o


4
-O বিকল্পটি mvn কে চেষ্টা করতে এবং আর্টফ্যাক্টটি দূর থেকে ডাউনলোড করতে ব্যর্থ হয় না যদি এটি স্থানীয় বিল্ড ব্যবহারের পরিবর্তে যখন আর্টফ্যাক্টটি স্থানীয়ভাবে তৈরি করা হয়েছিল এবং ইনস্টল করা হয়েছিল ততক্ষণ ডাউনলোড না করা হয়েছে।
ব্যবহারকারী 1767316

4
এটি সত্য - যদি আপনার কাছে স্থানীয় কপি না থাকে তবে আপনার ভাগ্য নেই। এটি আপনি আগে তৈরি প্রকল্পগুলির জন্য দরকারী, তবে সম্ভাব্য সাম্প্রতিক SNAPSHOT পরিবর্তনগুলি রয়েছে যা আপনি বিবেচনা করবেন না।
শান

অথবা আপনি কখনও প্রকল্পটি তৈরি না করলেও আপনি এটি অফলাইনে নির্মিত হওয়ার জন্য প্রস্তুত করতে পারেনmvn dependency:go-offline
এলডিয়ান

আপনি যদি সদ্য ইনস্টল করা একটি স্থানীয় অনুলিপি থাকে (তবে এটি কখনই নিযুক্ত / দূরবর্তী স্ন্যাপশট রেপোতে উপলব্ধ নয়)?
বিবেক চাভদা

4
আহ, আমি নির্ভরশীলতার সংকলন সহ একটি পম প্রকল্প তৈরি করেছি, তবে গ্রাহক প্রকল্পে <টাইপ পম </ টাইপ> নির্দিষ্ট করে নেই, তাই এটি একটি জারটি খুঁজছিল (এবং অবশ্যই এটি খুঁজেও পেল না even অফলাইন মোডে)
বিবেক চভদা

5

নীচের পদক্ষেপগুলি অনুসরণ করুন:

    1. আপনি রাখতে চান এমন জার বাদে আপনার স্থানীয় অবস্থিত জার ফোল্ডারের সমস্ত সামগ্রী মুছে ফেলার বিষয়টি নিশ্চিত করুন।
      উদাহরণস্বরূপ ফাইলগুলি .repositories, .pom, .sha1, .lastUpdated ইত্যাদির মতো
    1. সম্পাদন mvn clean install -oকমান্ড

এটি কোনও সংগ্রহস্থলের সাথে সংযোগ স্থাপনের চেয়ে স্থানীয় সংগ্রহস্থল জারের ফাইলগুলি ব্যবহার করতে সহায়তা করবে।


4
কেবল *.repositoriesএবং *.sha1ফাইলগুলি সরানো আমার পক্ষে কাজ করেছে
DLight

4

আমার ক্ষেত্রে আমার মতো আপনার মতো একটি মাল্টি মডিউল প্রকল্পও ছিল। আমার প্রকল্পটি বাইরের লাইব্রেরির একটি গ্রুপ আইডি পরিবর্তন করতে হয়েছিল যা নীচের চিত্রের উপর নির্ভর করে।

থেকে:

<dependencyManagement>
    <dependency>
        <groupId>org.thirdparty</groupId>
        <artifactId>calculation-api</artifactId>
        <version>2.0</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>
<dependencyManagement>

প্রতি:

<dependencyManagement>
   <dependency>
      <groupId>org.thirdparty.module</groupId>
        <artifactId>calculation-api</artifactId>
        <version>2.0</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>
<dependencyManagement>

<গোষ্ঠী আইডি> বিভাগে মনোযোগ দিন। দেখা গেল যে আমি সাবমোডিয়ালের সংশ্লিষ্ট বিভাগটি পরিবর্তিত করতে ভুলে যাচ্ছিলাম যা তাদের পোম ফাইলগুলিতে এই নির্ভরতা সংজ্ঞায়িত করে।

এটি আমাকে খুব পাগল করেছিল কারণ মডিউলটি স্থানীয়ভাবে উপলব্ধ ছিল।


2

-O বিকল্পটি আমার পক্ষে কার্যকর হয়নি কারণ নিদর্শনগুলি এখনও বিকাশে রয়েছে এবং এখনও আপলোড করা হয়নি এবং মভেন (3.5.x) এখনও এটি রিমোট রিপোজিটরি থেকে ডাউনলোড করার চেষ্টা করে কারণ আমার প্রাপ্ত ত্রুটি অনুসারে এটি প্রথমবার।

তবে এটি আমার জন্য এটি স্থির করেছে: https://maven.apache.org/general.html#importing-jars

এই ম্যানুয়ালটি ইনস্টলের পরে অফলাইন বিকল্পটি ব্যবহার করার দরকার নেই।

হালনাগাদ

আমি কেবল নির্ভরতা পুনর্নির্মাণ করেছি এবং আমাকে এটি পুনরায় আমদানি করতে হয়েছিল: নিয়মিত mvn clean installআমার পক্ষে যথেষ্ট ছিল না


2

উপরের সমস্ত উত্তর বিবেচনা করার পরেও আপনি এখনও এমন সমস্যাগুলির মধ্যে দৌড়াতে পারেন যা আপনার ত্রুটিযুক্ত অফলাইন বিল্ডকে শেষ করে দেবে। বিশেষত, আপনি ফলওস হিসাবে একটি সতর্কতা অনুভব করতে পারেন:

[WARNING] The POM for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 is missing, no dependency information available

সতর্কতাটি তত্ক্ষণাত্ আরও ত্রুটিগুলি অনুসরণ করা হবে এবং ম্যাভেন বন্ধ হয়ে যাবে।

আমাদের জন্য উপরের ইঙ্গিতগুলি অনুসরণ করে তৈরি করা ম্যাভেন অফলাইন ক্যাশে দিয়ে অফলাইন তৈরির নিরাপদতম উপায়টি নিম্নোক্ত মেভেন অফলাইন প্যারামিটারগুলি ব্যবহার করা:

mvn -o -llr -Dmaven.repo.local=<path_to_your_offline_cache> ...

বিশেষত, বিকল্প -৪r উত্তর # 4 এর প্রস্তাব অনুসারে আপনার স্থানীয় ক্যাশে টিউন করতে বাধা দেয়।

সেটিংস.এক্সএমএল-এর স্থানীয় রিপোসিটোরি প্যারামিটারটি নীচে সেট করা আছে সেদিকেও খেয়াল রাখুন:

<localRepository>${user.home}/.m2/repository</localRepository>

0

আমার ঠিক একই সমস্যা ছিল. এটি সমাধানের mvn clean installপরিবর্তে চলছে mvn clean compile। পার্থক্য কেবলমাত্র মাল্টি-মভেন-প্রজেক্ট ব্যবহার করার সময় দেখা যায় যেহেতু ইনস্টল ব্যবহার করে প্রকল্পের নির্ভরতা স্থানীয় সংগ্রহস্থলে আপলোড করা হয়।


-1

ম্যাভেন সর্বদা আপনার স্থানীয় সংগ্রহস্থলটি প্রথমে পরীক্ষা করে দেখেন, তবে মাভেন এটির জন্য আপনার নির্ভরতা আপনার রেপোতে ইনস্টল করা প্রয়োজন।

mvn installপ্রথমে আপনার নির্ভরতা মডিউলটি চালান এবং তারপরে আপনার নির্ভরশীল মডিউলটি তৈরি করুন।


4
আমি আমার প্রশ্নটি সম্পাদনা করে দেখিয়েছি যে নিদর্শনগুলি রেপোতে রয়েছে (আমি যে "ls -al" কমান্ডটি চালাচ্ছি তা লক্ষ্য করুন। তবুও মাভেন এটিকে যাইহোক ডাউনলোড করার চেষ্টা করছেন। অন্য কোনও ধারণা?
ডেভ

6
@ অলিভার: আপনি স্থানীয় ভান্ডারগুলিতে নিদর্শনগুলির জন্য অনুপস্থিত, মাভেন এখনও রিমোট রিপোজিটরিগুলির সাথে পরামর্শ করতে পারেন যদি আর্টিফ্যাক্টটি খুব পুরানো sn
Andreas Veithen
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.