2011-02-28 12 views
6

पर आर्टिफैक्ट और उसके डीपी डाउनलोड करें मुझे कुछ याद आना चाहिए। मैंने खोज और खोज की है, और खेला और टिंकर किया है, और मैं अभी भी यह समझ नहीं सकता कि मैवेन के साथ निम्नलिखित कैसे करें:मेवेन: एक विशिष्ट निर्देशिका

मैं एक आर्टिफैक्ट और इसकी सभी निर्भरताओं (और ट्रांजिटिव निर्भरताओं) को डाउनलोड करना चाहता हूं आंतरिक नेक्सस सर्वर, उपयोगकर्ता द्वारा निर्दिष्ट स्थान में। यहां विचार यह है कि वह व्यक्ति जो इस उत्पादन में समाधान को तैनात कर रहा है उसे अनुमति देने के लिए एक तरीका है कि वे आसानी से एक ही स्थान पर सभी जार फ़ाइलों को प्राप्त कर सकते हैं।

निर्भरता है: प्राप्त करें, और यह नज़दीक-लेकिन-सिगार है। निर्भरता के साथ: प्राप्त करें, सभी कलाकृतियों को स्थानीय एमवीएन भंडार में डाउनलोड किया जाता है, प्रत्येक आर्टिफैक्ट के समूह आईडी और आर्टिफैक्ट आईडी के अनुसार निर्देशिकाओं के तहत। यह वह नहीं है जो मैं चाहता हूं, क्योंकि तब आपको जारों पर जाने के लिए उन सभी निर्देशिकाओं के चारों ओर घूमना होगा। मैं चाहता हूं कि सभी फाइलें एक निर्देशिका में डाउनलोड की जाए ताकि वे एक ही स्थान पर हों।

फिर निर्भरता है: प्रति-निर्भरताएं। यह फिर से जो मैं चाहता हूं करता है; यह सभी आर्टिफैक्ट के डीपी को लक्ष्य/निर्भरता में प्रतिलिपि बनाता है। इसके साथ दो समस्याएं हैं 1) आपको एक pom.xml होना चाहिए; आप निर्भरता के साथ मनमानी निर्देशांक निर्दिष्ट नहीं कर सकते हैं: प्राप्त करें, और 2) निर्भरता: प्रति-निर्भरता मुख्य आर्टिफैक्ट को लक्ष्य/निर्भरताओं में स्वयं कॉपी नहीं करती है।

ऐसा करने का एक बेहतर तरीका होना चाहिए, लेकिन मैं यह नहीं समझ सकता कि समाधान के लिए और कहां देखना है। सारांशित करने के लिए, मैं किसी को मेवेन निर्देशांक (समूह आईडी: artifactId: संस्करण) और हमारे आंतरिक नेक्सस यूआरएल का एक सेट देने में सक्षम होना चाहता हूं, और उन्हें एक ही कमांड के साथ अपने चयन की निर्देशिका में सब कुछ डाउनलोड कराना है।

+0

क्या आप ऐसी परियोजना बना सकते हैं जो उन पर निर्भरता के रूप में उपयोग करता है, उन्हें अंदर ले जाता है, और उन जारों के साथ अपना स्वयं का आर्टिफैक्ट बनाता है? – corsiKa

+0

मुझे ऐसा लगता है, लेकिन यह बिल्कुल सही नहीं लगता है। एक आर्टिफैक्ट और उसके डीपीएस को सीधे डाउनलोड करने का एक तरीका होना चाहिए, नहीं? – Steven

+0

मैं पूरी तरह से सहमत हूं। यह सही प्रतीत नहीं होता है। और आखिरी चीज जो चाहती है वह है "कुछ ऐसा जो तब तक काम करता है जब तक हम एक बेहतर तरीका नहीं पाते" क्योंकि आप हमेशा के लिए क्लज के साथ फंस जाएंगे। लेकिन अगर सब कुछ विफल हो जाता है ... :) – corsiKa

उत्तर

0

यदि आप "किसी को मेवेन निर्देशांक का एक सेट देना चाहते हैं" तो उन्हें एक विशेष pom.xml में रखना सबसे अच्छा होगा (आपको उन्हें कहीं भी लिखना होगा)। यह पोम आपके "मुख्य आर्टिफैक्ट" का पोम नहीं है लेकिन निर्भरता के रूप में "मुख्य आर्टिफैक्ट" है। पैकेजिंग प्रकार pom हो सकता है क्योंकि यह प्रोजेक्ट कोई भी आर्टिफैट नहीं बनाएगा।

फिर dependency:copy-dependencies समाधान का उपयोग करें जिसका आपने पहले से मूल्यांकन किया है और आपको अपनी सभी निर्भरताओं को प्राप्त होगा। IMHO एक सुरुचिपूर्ण और सरल समाधान। मैं किसी भी बेहतर नहीं जानता।

1

एक ज़िप फ़ाइल में अतिरिक्त "जार निर्भरता" पैकेज करने के लिए मेवेन असेंबली प्लगइन का उपयोग करें जिसमें सबकुछ शामिल है।

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <!-- TODO: a jarjar format would be better --> 
    <id>jar-with-dependencies</id> 
    <formats> 
    <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory> 
     <useProjectArtifact>true</useProjectArtifact> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

तो उपयोगकर्ता सिर्फ <type>zip</type> नियमित 'Maven निर्देशांक' के अलावा सभी निर्भरता के साथ एक ज़िप फ़ाइल प्राप्त करने के लिए अनुरोध कर सकते हैं,।

+0

+1 - मैंने अपने प्रोजेक्ट के जेएआर को अपनी निर्भरताओं के साथ पैकेज करने के लिए असेंबली प्लगइन का उपयोग किया है जब मुझे निष्पादन योग्य डेस्कटॉप एप्लिकेशन वितरित करने की आवश्यकता होती है; सभी आश्रित जेएआरएस को कक्षा में उपस्थित होना था। इसे कॉन्फ़िगर करना बहुत आसान है और इसमें बहुत अच्छा प्रलेखन है। –