निर्देशिका में सभी मावेन निर्भरता को डाउनलोड करना रिपोजिटरी में नहीं है?


128

मैंने अपनी परियोजना को मावेन में बदलना शुरू कर दिया क्योंकि मुझे एक पुस्तकालय का उपयोग करने की आवश्यकता थी जो केवल मावेन पर द्विआधारी रूप में वितरित किया गया था, लेकिन दीवार पर इसके खिलाफ मेरे सिर को पीटने के बाद बहुत लंबे समय तक मैंने खुद को चोट पहुंचाना बंद करने और बस उपयोग करने का फैसला किया है चींटी। मैं सिर्फ अपने चयन की एक निर्देशिका में जार डाउनलोड करने के लिए जार और उसके सभी सकर्मक निर्भरता है, तो मैं सिर्फ उन्हें अपने SCM में जाँच कर सकते हैं क्योंकि मैं आम तौर पर आनंद लेते हैं और एक बार फिर एक आनंदित डेवलपर हो।
किसी भी विचार कैसे आसानी से करने के लिए?


2
आइवी का उपयोग करने पर विचार करें और आप जिस चींटी पर भरोसा करते हैं, उसके साथ आप की जरूरत पर निर्भरतापूर्ण प्रबंधन प्राप्त करें। या बुलेट को काटने और मावेन निर्देशिका संरचना का उपयोग करें।
डेव न्यूटन

क्या आपने आइवी आजमाया है ?
टॉमाज़ नर्कविक्ज़

5
नहीं, लेकिन मैंने इस बिंदु पर स्विच करने के साथ अपने धैर्य के सभी खर्च किए हैं। शायद अगली बार। मैं कोडिंग पर वापस जाना चाहता हूं। क्या यह मावेन के साथ किया जा सकता है?
चूबसॉन्डब्स

जवाबों:


261

Maven निर्भरता प्लगइन संभवतः अपनी समस्या को हल कर सकते हैं।

यदि आपके पास pomअपनी सभी परियोजना निर्भरता निर्दिष्ट है, तो आपको बस इतना करना होगा

mvn dependency:copy-dependencies

और आपको target/dependenciesट्रांसीवर सहित सभी निर्भरताओं से भरा फ़ोल्डर मिलेगा ।

नीचे से गुस्तावो का उत्तर जोड़ना : निर्भरता स्रोतों को डाउनलोड करने के लिए , आप उपयोग कर सकते हैं

mvn dependency:copy-dependencies -Dclassifier=sources

( Apache Maven Dependency Plugin doc के माध्यम से )।


1
Thx @ रघुराम, मैं उम्र के लिए देख रहा हूँ।
13

लेकिन क्या होगा अगर मैं अपने स्थानीय रेपो के लिए सभी निर्भरता को कॉपी करना चाहता हूं? यह माना जाता है कि इसका उपयोग किया जाना है? अगर यह पहले से ही स्थानीय रेपो में हो तो कॉपी क्यों करें। यह वैसे भी स्थानीय है।
Ses

1
@ses एक मानक मावेन बिल्ड (जैसे संकलन, परीक्षण, पैकेज, इंस्टॉल, आदि। वैध के बारे में निश्चित नहीं) पहले से ही डिफ़ॉल्ट रूप से आपके स्थानीय रेपो के सभी निर्भरता को कॉपी करता है। यह उसके लिए नहीं है। इसके बजाय यह उन स्थितियों के लिए है जहाँ आपको किसी भी कारण से अपने ऐप की निर्भरता की आवश्यकता होती है। मैं अभी इसका उपयोग अनावश्यक एपीआई परिभाषाओं के लिए आश्रित पुस्तकालयों का निरीक्षण करने के लिए कर रहा हूँ (उदाहरण के लिए कुछ पुस्तकालयों में Javax API शामिल होंगे, जो उसी API के अन्य संस्करणों के साथ संघर्ष कर सकते हैं), लेकिन यह अच्छा भी है यदि आपके ऐप को इसकी निर्भरता की आवश्यकता है। वितरण के लिए, या जो भी हो।
स्पेंकी क्विगमैन

1
एक स्पष्ट, संक्षिप्त और सहायक उत्तर के लिए +1। मैं ओपी के रूप में एक ही मावन नृत्य के माध्यम से चला गया और सिर्फ जार फ़ाइल निर्भरता को पुनः प्राप्त करना चाहता था। धन्यवाद! काश मैं +10
ब्रैंडन

@ रघुराम तकनीकी रूप से आप "लक्ष्य / निर्भरता" में सभी (सुलझे हुए) कलाकृतियों के साथ समाप्त होते हैं। इसके अलावा, नाम टकरावों की संभावित समस्या है क्योंकि "ग्रुपआईड" पर निर्भरता के समन्वय को अनदेखा किया जाता है। दूसरे शब्दों में, "निर्भरता: कॉपी-निर्भरता" लेआउट संरचना को संरक्षित नहीं करता है।
whaefelinger

8

@ रघुराम के उत्तर के आधार पर , मुझे परियोजना निर्भरता की प्रतिलिपि बनाने का एक ट्यूटोरियल मिला , बस:

  1. अपनी प्रोजेक्ट pom.xmlफ़ाइल खोलें और इसे देखें:

    <project>
      [...]
      <build>
        <plugins>
          ...
        </plugins>
      </build>
      [...]
    </project>
  2. इसके <plugins> ... </plugins>साथ प्रतिस्थापित करें :

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  3. और कमांड लाइन के भीतर मैवेन को कॉल करें mvn dependency:copy-dependencies

यह समाप्त होने के बाद, यह वर्तमान निर्देशिका पर target/dependencyसभी jarनिर्भरता के भीतर फ़ोल्डर बना देगा जहां pom.xmlजीवन है।


मैं "mvan" कमांड कहाँ टाइप करूँ? राइट क्लिक मावेन-प्रोजेक्ट-> मावेन -> .. ??
पके हुए इनफेल

फ़ोल्डर पर एक टर्मिनल कमांड लाइन में जहां pom.xmlफ़ाइल चालू है।
उपयोगकर्ता

1
काम नहीं किया। मुझे लगता है कि मावेन केवल एक प्लगइन के रूप में स्थापित है। मुझे मैन्युअल रूप से मावेन को भी डाउनलोड करना था। फिर mvn dependency:copy-dependenciesकाम किया!
बेक्ड इनफ्लोर

8

मैंने आखिरकार पता लगाया कि मावेन का उपयोग कैसे किया जाता है। ग्रहण के भीतर से, एक नया मैवेन प्रोजेक्ट बनाएं।

डाउनलोड करें, संग्रह को निकालें, /binपथ में फ़ोल्डर जोड़ें ।

चलाने के द्वारा कमांड-लाइन से वैधता स्थापित करें mvn -v(संस्करण और जावा स्थापित पथ प्रिंट करेगा)

प्रोजेक्ट रूट फ़ोल्डर में बदलें (जहां pom.xmlस्थित है) और चलाएं:

mvn dependency:copy-dependencies

सभी jar-files को डाउनलोड किया जाता है /target/dependency

एक और आउटपुट निर्देशिका सेट करने के लिए:

mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"

अब pav.xml को बदलकर सभी निर्भरता डाउनलोड के लिए इस मावेन-परियोजना का फिर से उपयोग करना संभव है

निर्माण पथ से जावा परियोजना में जार जोड़ें -> बिल्ड पथ को कॉन्फ़िगर करें -> पुस्तकालय -> जार जोड़ें ..


1
जरूरी नहीं कि एक ग्रहण परियोजना हो। मैंने Java Decompiler में एक जार फ़ाइल खोली और pom.xml को एक खाली फ़ोल्डर में कॉपी किया। मैंने mvn dependency:copy-dependenciesआपको उस फ़ोल्डर से वर्णित के रूप में बुलाया और सभी निर्भर जार फ़ाइलों को अच्छी तरह से एक एकल फ़ोल्डर में कॉपी किया।
बर्नहार्ड डब्लर


2

कृपया जांचें कि क्या आपके पास ${MAVEN_HOME}/confनिर्देशिका में कुछ कॉन्फिग फाइलें हैं settings.xml। वे फ़ाइलें .m2फ़ोल्डर से सेटिंग को ओवरराइड करती हैं और उस वजह से, रिपॉजिटरी फ़ोल्डर .m2दिखाई या खारिज नहीं किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.