मैं एक कलाकृति स्थापित install:install-fileकर सकता हूं, लेकिन मैं एक कलाकृति कैसे डाउनलोड कर सकता हूं?
उदाहरण के लिए:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
मैं एक कलाकृति स्थापित install:install-fileकर सकता हूं, लेकिन मैं एक कलाकृति कैसे डाउनलोड कर सकता हूं?
उदाहरण के लिए:
mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST
जवाबों:
आप मावेन निर्भरता प्लगइन का उपयोग कर सकते हैं जिसका dependency:getसंस्करण 2.1 से एक अच्छा लक्ष्य है। पोम की जरूरत नहीं, सब कुछ कमांड लाइन पर होता है।
dependency:getलक्ष्य को खोजने के लिए , आपको संस्करण 2.1 का उपयोग करने के लिए स्पष्ट रूप से मावेन को बताने की आवश्यकता है, अर्थात आपको संस्करण सहित प्लगइन के पूरी तरह से योग्य नाम का उपयोग करने की आवश्यकता है:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
-DrepoUrl=url \
-Dartifact=groupId:artifactId:version
अद्यतन: मावेन के पुराने संस्करणों (2.1 से पहले) के साथ, dependency:getप्लगइन के दिए गए संस्करण का उपयोग करने के लिए मावेन की अपनी प्रतिलिपि को मजबूर करके सामान्य रूप से (पूरी तरह से योग्य नाम और संस्करण का उपयोग किए बिना) चलाना संभव है ।
इसे इस प्रकार किया जा सकता है:
1. <settings>अपनी ~/.m2/settings.xmlफ़ाइल के तत्व में निम्नलिखित पंक्ति जोड़ें :
<usePluginRegistry>true</usePluginRegistry>
2. ~/.m2/plugin-registry.xmlनिम्नलिखित सामग्री के साथ फ़ाइल जोड़ें :
<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<useVersion>2.1</useVersion>
<rejectedVersions/>
</plugin>
</plugins>
</pluginRegistry>
लेकिन यह मावेन 2.1 / 2.2 के साथ अब काम नहीं करता है। दरअसल, प्लगिन रजिस्ट्री के परिचय के अनुसार , सुविधाओं plugin-registry.xmlको पुन: डिज़ाइन किया गया है (पोर्टेबिलिटी के लिए) और प्लगइन रजिस्ट्री वर्तमान में मावेन 2 के भीतर एक अर्ध-निष्क्रिय स्थिति में है । तो मुझे लगता है कि हमें अब लंबे नाम का उपयोग करना होगा (जब एक पोम के बिना प्लगइन का उपयोग करना, जो कि पीछे का विचार है dependency:get)।
:jar:sourcesकरने के लिए विरूपण साक्ष्य , देख stackoverflow.com/a/31109185/537554
mvn dependency:get -Dartifact=group-id:artefact-id:version
मावेन डिपेंडेंसी प्लगिन के नवीनतम संस्करण (2.8) के साथ , मावेन सेंट्रल रिपॉजिटरी से एक कलाकृति डाउनलोड करना उतना ही सरल है:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=groupId:artifactId:version[:packaging[:classifier]]
जहाँ groupId:artifactId:version, आदि मावेन निर्देशांक हैं
एक उदाहरण, मावेन 2.0.9, मावेन 2.2.1 और मावेन 3.0.4 के साथ परीक्षण किया गया:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:get -Dartifact=org.hibernate:hibernate-entitymanager:3.4.0.GA:jar:sources
( पहली जगह में अपना अद्भुत जवाब प्रदान करने के लिए पास्कल थिवेंट के लिए धन्यवाद । मैं एक और उत्तर जोड़ रहा हूं, क्योंकि यह एक टिप्पणी में फिट नहीं होगा और यह एक संपादन के लिए बहुत व्यापक होगा।)
jar:sourcesइसका मतलब समझा सकते हैं / क्या करते हैं? आपको "जार" निर्दिष्ट करने की आवश्यकता क्यों है? और "स्रोतों" का अर्थ है कि यह अतिरिक्त निर्भरता डाउनलोड करेगा जिसे कलाकृतियों की आवश्यकता है?
sources, एक जावा फ़ाइल जिसमें केवल जावा स्रोत हैं, 3. javadoc, केवल एपीआई डॉक्स के साथ एक जार फ़ाइल। यह भी देखें: Maven डिफ़ॉल्ट विरूपण साक्ष्य हैंडलर ।
[:classifier]सही ढंग से उपयोग किया जाए , अगर मेरे पास एक एसेंबलबी प्लगइन है जो ज़िप फ़ाइल बनाया है जिसे मैं डाउनलोड करना चाहता हूं।
यहाँ मेरे लिए काम किया है, जो कि अंत में मावेन 3.1.1 के साथ "Components.jar" नामक एक कलाकृतियों का नवीनतम संस्करण डाउनलोड करने के लिए है (अन्य सुझाव ज्यादातर मावेन संस्करण परिवर्तनों के कारण मुझे विश्वास नहीं हुआ)
यह वास्तव में फ़ाइल को डाउनलोड करता है और इसे स्थानीय कामकाजी निर्देशिका में कॉपी करता है
बैश से:
mvn dependency:get \
-DrepoUrl=http://.../ \
-Dartifact=com.foo.something:component:LATEST:jar \
-Dtransitive=false \
-Ddest=component.jar \
-DrepoUrl, मुझे लगता है कि यह वैसे भी मेरे पोम से निहित था। इसके अलावा मैं इसका इस्तेमाल नहीं करता था -Ddestक्योंकि मैं वास्तव में इसे नियमित निर्देशिका में डाउनलोड करना चाहता था.m2 ।
destपैरामीटर बहिष्कृत हो गई है , और का एक invokation साथ बदला जा सकता copyके बाद getतो जैसे: mvn dependency:copy -Dartifact=com.foo.something:component:LATEST:jar -DoutputDirectory=.(इस मामले में काम कर रहे निर्देशिका में जार रखने में)।
Goal requires a project to execute but there is no POM in this directory:।
mvn dependency:copy(बिना dependency:getपहले) दौड़ सकता हूं ।
विरूपण साक्ष्य द्विआधारी प्राप्त करने के बारे में, पास्कल थिवेंट का जवाब है, लेकिन यह भी विरूपण साक्ष्य जार प्राप्त करने के लिए, हम उपयोग कर सकते हैं:
mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources
जैसे
mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources
यह काम करता है क्योंकि artifactपैरामीटर वास्तव में होते हैं groupId:artifactId:version[:packaging][:classifier]। बस पैकेजिंग और क्लासिफायर वैकल्पिक हैं।
साथ jarके रूप में पैकेजिंग और sourcesके रूप में वर्गीकारक , Maven निर्भरता प्लगइन हम स्रोतों जार, नहीं विरूपण साक्ष्य जार के लिए पूछ रहे हैं समझता है।
दुर्भाग्य से अब स्रोतों के लिए जार फ़ाइलों को सकरात्मक रूप से डाउनलोड नहीं किया जा सकता है, जो समझ में आता है, लेकिन आदर्श रूप से मेरा मानना है कि यह विकल्प भी सम्मान कर सकता downloadSourcesहै जैसे मावेन एक्लिप्स प्लगइन करता है।
कोई निर्भरता का उपयोग कर सकता है: प्रतिलिपि ( http://maven.apache.org/plugins/maven-d dependency- plugin /copy- mojo.html ) जो प्लगइन विन्यास अनुभाग में परिभाषित कलाकृतियों की एक सूची लेता है और उन्हें एक निर्दिष्ट स्थान पर कॉपी करता है। , उनका नाम बदलकर या यदि वांछित है तो संस्करण को अलग करना। यह लक्ष्य दूरस्थ रिपॉजिटरी से कलाकृतियों को हल कर सकता है यदि वे स्थानीय रिपॉजिटरी या रिएक्टर में मौजूद नहीं हैं।
प्लगइन के सभी गुणों का उपयोग मावेन सीएलआई में नहीं किया जा सकता है। जिन संपत्तियों में "उपयोगकर्ता संपत्ति:" परिभाषित की गई संपत्ति निर्दिष्ट की जा सकती है। नीचे दिए गए उदाहरण में मैं अपने अस्थायी फ़ोल्डर में junit डाउनलोड कर रहा हूं और जार फ़ाइल से vesion को हटा रहा हूं।
mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:copy -Dartifact=junit:junit:4.11 -DoutputDirectory=/tmp -Dmdep.stripVersion=true
जहाँ विरूपण साक्ष्य = कनिष्ठ: कनिष्ठ: 4.11 मावेन निर्देशांक है। और आप artifcat को groupId के रूप में निर्दिष्ट करते हैं: विरूपण साक्ष्य: संस्करण: [: पैकेजिंग [: वर्गीकरण]]
( प्रथम स्थान पर अपने https://stackoverflow.com/a/18632876/2509415 प्रदान करने के लिए पास्कल थिवेंट का धन्यवाद । मैं एक और उत्तर जोड़ रहा हूं)
एक लाइनर mvan के बिना नवीनतम मावेन विरूपण साक्ष्य डाउनलोड करने के लिए:
curl -O -J -L "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"
आधिकारिक प्रलेखन से उपयोग:
https://maven.apache.org/plugins/maven-dependency-plugin/usage.html#dependency:get
मेरे मामले के लिए, नीचे दिया गया जवाब देखें:
mvn dependency:get -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false
mvn dependency:copy -Dartifact=$2:$3:$4:$5 -DremoteRepositories=$1 -Dtransitive=false -DoutputDirectory=$6
#mvn dependency:get -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false
#mvn dependency:copy -Dartifact=com.huya.mtp:hynswup:1.0.88-SNAPSHOT:jar -DremoteRepositories=http://nexus.google.com:8081/repository/maven-snapshots/ -Dtransitive=false -DoutputDirectory=.
कमांड का उपयोग करें "मावन निर्भरता: प्राप्त करें" विशिष्ट आर्किटैक्ट डाउनलोड करने के लिए और कमांड का उपयोग करें "मावन निर्भरता: प्रतिलिपि" डाउनलोड की गई कलाकृतियों को डीआईआर को नष्ट करने के लिए कॉपी करने के लिए "-DoutputDirectory"
यहाँ एक उदाहरण दिया गया है कि ASM-7 को मावेन 3.6 का उपयोग किया जाता है:
mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar
या आप यहाँ से जार डाउनलोड कर सकते हैं: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm और फिर
mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar
आदेश:
mvn install:install-file
आमतौर पर आपके स्थानीय भंडार में विरूपण साक्ष्य स्थापित करता है, इसलिए आपको इसे डाउनलोड करने की आवश्यकता नहीं होनी चाहिए। हालाँकि, यदि आप अपनी कलाकृतियों को दूसरों के साथ साझा करना चाहते हैं, तो आपको कलाकृतियों को एक केंद्रीय भंडार में तैनात करने की आवश्यकता होगी, अधिक विवरण के लिए तैनाती प्लगइन देखें।
इसके अतिरिक्त, अपने POM पर निर्भरता जोड़ने पर आपको अपनी परियोजना बनाते समय किसी भी तृतीय-पक्ष की कलाकृतियों की आवश्यकता होगी। यानी यह केंद्रीय भंडार से कलाकृतियों को डाउनलोड करेगा।