2013-03-16 7 views
20

पर किसी निर्देशिका के लिए निर्भरताओं को डाउनलोड करने के लिए मेवेन का उपयोग करना मुझे किसी प्रोजेक्ट की सभी ट्रांजिटिव निर्भरताओं को कमांड लाइन पर किसी निर्देशिका में पर pom.xml फ़ाइल या अन्य स्क्रिप्ट रखने की आवश्यकता है। आदर्श रूप में मैं इसे एक या दो आदेशों के साथ करने में सक्षम होगा। मैं जो कह सकता हूं, उससे कम से कम 2 कदम प्रक्रिया एमवीएन के साथ है।कमांड लाइन

  1. डाउनलोड स्थानीय भंडार
  2. के लिए उनकी निर्भरता lib निर्देशिका

के लिए उनकी निर्भरता कॉपी निर्भरता प्राप्त करने के लिए मैं

$ mvn org.apache.maven.plugins:maven-dependency-plugin:2.6:get -DgroupId=org.jclouds.provider -DartifactId=rackspace-cloudservers-us -Dversion=1.5.8 

कौन सा अच्छा काम करता है चलाते हैं। दुर्भाग्य से dest param मुझमें मदद नहीं करता है क्योंकि यह सभी ट्रांजिटिव निर्भरताओं को नियत में नहीं रखेगा।

तो अब मुझे उस जेएआर फ़ाइल और इसकी सभी ट्रांजिटिव निर्भरताओं को मेरी lib निर्देशिका में कॉपी करने की आवश्यकता है। मुझे पता है कि इस हिस्से को स्टैक ओवरफ्लो पर कई बार पूछा गया है लेकिन अभी तक मेरे लिए कुछ भी नहीं हुआ है। मैंने निम्नलिखित कोशिश की है।

$ mvn dependency:copy-dependencies ... 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy-dependencies (default-cli): Goal requires a project to execute but there is no POM in this directory 

और

$ mvn dependency:copy ... 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy (default-cli): Goal requires a project to execute but there is no POM in this directory 

कॉपी-निर्भरता के लिए StackOverflow पर यहाँ दस्तावेज और अन्य उत्तर पढ़ने और से कॉपी मैंने सोचा कि मैं एक pom.xml बिना कमांड लाइन से उन्हें इस्तेमाल करने में सक्षम होगा, लेकिन एमवीएन एक की जरूरत है। माई मेवेन संस्करण अपाचे मैवेन 3.0.4 (आर 1232337; 2012-01-17 02: 44: 56-0600) है।

क्या कोई मुझे pom.xml के बिना एमवीएन का उपयोग कर संक्रमणीय निर्भरताओं की प्रतिलिपि बनाने का एक उदाहरण दे सकता है?

क्या मैं यहां पूरा करने का प्रयास करने का एक बेहतर तरीका है?

+0

एक अच्छा एंटर प्लगइन है, क्या आप इसे आजमा सकते हैं? –

+0

मुझे लगता है कि आपका मतलब है http://maven.apache.org/plugins/maven-antrun-plugin/ यह करने के लिए मैं इसका उपयोग कैसे करूँगा जो मैं पूरा करने की कोशिश कर रहा हूं? –

+0

मैं निर्देशिकाओं की प्रतिलिपि बनाने और स्थानांतरित करने के लिए antrun प्लगइन के _run_ लक्ष्य का उपयोग कर रहा हूं, तो हो सकता है कि आप अपनी सभी फाइलें (जार, सीएफजी फाइल इत्यादि) को कुछ फ़ोल्डर में इकट्ठा कर सकें और वहां से उन्हें स्थानांतरित कर सकें? या बस सीपी/एक्सकॉपी का उपयोग कर? –

उत्तर

23

पहले आदेश लगभग आप हो जाता है कि तुम क्या जरूरत है - प्रश्न में निर्भरता के पोम। एक बार जब आप गए हैं, आपको copy:dependencies को चलाने के लिए एक और परियोजना पोम आवश्यकता नहीं होनी चाहिए:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.7:get -DgroupId=org.jclouds.provider -DartifactId=rackspace-cloudservers-us -Dversion=1.5.8 -Dtype=pom 

mvn org.apache.maven.plugins:maven-dependency-plugin:2.7:copy-dependencies -f /path/to/m2/repo/org/jclouds/provider/rackspace-cloudservers-us/1.5.8/rackspace-cloudservers-us-1.5.8.pom -DoutputDirectory=/path/to/target/dir/don't/use/. 

रूप Everett Toews से कहा, तुम copy:dependencies करने के अतिरिक्त विकल्प का उपयोग कर सकते आगे परिष्कृत करने के लिए क्या डाउनलोड होने के बाद:

यहाँ एक उदाहरण है उदाहरण के लिएपरीक्षण JARs को फ़िल्टर करने के लिए -DexcludeTypes=test-jar जोड़ कर।

0

मेरी समझ के मुताबिक आप अपने स्थानीय कंप्यूटर पर एक फ़ोल्डर में सभी निर्भरता कलाकृतियों को डाउनलोड करना चाहते हैं (अपने स्थानीय भंडार की खोज किए बिना)। ऐसा करने का सरल तरीका सरलpom.xml (हां, कृपया पोम बनाएं) जो WAR फ़ाइल बनाएगा और आपके आर्टिफैक्ट पर निर्भर करेगा। mvn clean package के बाद आपकी इच्छा WAR के lib फ़ोल्डर में सभी निर्भरताओं कलाकृतियों (transitive शामिल) मिल जाएगी।

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>testwar</groupId> 
    <artifactId>examplewar</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>examplewar Maven Webapp</name> 
    <dependencies> 
     <dependency> 
      <groupId>org.jclouds.provider</groupId> 
      <artifactId>rackspace-cloudservers-us</artifactId> 
      <version>1.5.8</version> 
     </dependency> 
    </dependencies> 

</project> 
+0

कोई pom.xml कृपया। –

26

मैवेन निर्भरता डाउनलोड करने के लिए अपाचे आईवी standalone jar के रूप में चलाया जा सकता है। कोई पीओएम आवश्यक नहीं है।

curl -L -O http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar 
java -jar ivy-2.3.0.jar -dependency org.jclouds.provider rackspace-cloudservers-us 1.5.8 -retrieve "lib/[artifact]-[revision](-[classifier]).[ext]" 

उत्पादन निम्न फ़ाइलें:

├── ivy-2.3.0.jar 
└── lib 
    ├── aopalliance-1.0.jar 
    ├── asm-3.1.jar 
    ├── bcprov-jdk16-1.46.jar 
    ├── cglib-2.2.1-v20090111.jar 
    ├── clojure-1.3.0.jar 
    ├── core.incubator-0.1.0.jar 
    ├── gson-2.2.jar 
    ├── guava-13.0.jar 
    ├── guice-3.0.jar 
    ├── guice-assistedinject-3.0.jar 
    ├── javax.inject-1.jar 
    ├── jclouds-compute-1.5.8.jar 
    ├── jclouds-core-1.5.8.jar 
    ├── jclouds-scriptbuilder-1.5.8.jar 
    ├── jsr250-api-1.0.jar 
    ├── jsr311-api-1.1.1.jar 
    ├── openstack-keystone-1.5.8.jar 
    ├── openstack-nova-1.5.8.jar 
    ├── rackspace-cloudidentity-1.5.8.jar 
    ├── rackspace-cloudservers-us-1.5.8.jar 
    ├── rackspace-cloudservers-us-1.5.8-javadoc.jar 
    ├── rackspace-cloudservers-us-1.5.8-sources.jar 
    ├── rocoto-6.1.jar 
    └── tools.logging-0.2.3.jar 
+0

यह एक अच्छा जवाब है और बहुत अच्छी तरह से काम करता है लेकिन यदि संभव हो तो मैं केवल मेवेन के साथ रहना चाहता हूं। धन्यवाद! –

+0

मैं इस आइवी कमांड में कस्टम मैवेन रिपोजिटरी कैसे जोड़ूं? –

+1

@JanusTroelsen अपने रेपो पर इंगित एक आईवी सेटिंग्स फ़ाइल को पास करने के लिए "-settings" विकल्प का उपयोग करें। उदाहरण सेटिंग्स फ़ाइल के लिए देखें: http://stackoverflow.com/questions/4836011/use-public-maven-repository-with-ivy/ –