2010-12-31 22 views
13

हम अपनी निर्माण प्रक्रिया के लिए एएनटी का उपयोग कर रहे हैं और निकट भविष्य में इसे बदलने की योजना नहीं है।कुछ लाइब्रेरी जार लाने के लिए मेवेन का उपयोग करें

यह संभव को Maven उपयोग करने के लिए सिर्फ आम मुक्त स्रोत जार फ़ाइलें लाने के (जैसे Log4J, SWT, JFace) और उन्हें हमारी परियोजना का सही स्थान में डाल दिया है, तो हम उन में स्टोर करने के लिए नहीं है हमारे संस्करण नियंत्रण — घर निर्देशिका में ठेठ मेवेन-कैश बनाने के बिना बेहतर?

उत्तर

17

नहीं नहीं हर कोई!

यदि आप चींटी का उपयोग कर रहे हैं, तो जार निर्भरताओं को डाउनलोड करने के लिए मेवेन रिपॉजिटरीज़ का उपयोग करने का सबसे अच्छा तरीका है Ant के साथ Ivy का उपयोग करना। यही वही है जो आइवी के लिए है।

आइवी स्थापित करना और वर्तमान चींटी परियोजनाओं के साथ काम करना आसान है। यह नेक्सस और आर्टिफैक्टरी के साथ काम करता है यदि आप उन्हें अपने स्थानीय मेवेन रिपोजिटरीज के रूप में उपयोग करते हैं।

Ivy पर एक नज़र डालें। यह शायद वही है जो आप चाहते हैं।

+0

या मैवेन चींटी कार्य। या तो एक भंडार से कलाकृतियों को डाउनलोड करने के लिए चींटी का उपयोग करता है। http://maven.apache.org/ant-tasks/index.html – michael

+0

मैवेन-चींटी-कार्यों का उपयोग न करें यह एक बहुत पुरानी परियोजना है जिसे बहिष्कृत किया जाना चाहिए, यह मूल संकल्प करता है लेकिन इससे परे कुछ भी कम हो जाएगा – sloven

4

org.life.java's answer की भिन्नता में, मैं mvn install नहीं करूँगा। अब

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
<outputDirectory>${project.build.directory}/lib</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

तुम सिर्फ mvn generate-sources है, जो पूर्ण mvn install की तुलना में बहुत तेजी से होता है क्या करने की जरूरत है, और सभी निर्भरता में कॉपी किया जायेगा:

इसके बजाय, pom.xml में मैं निम्नलिखित बिट जोड़ना होगा निर्दिष्ट निर्देशिका।


ओह बीटीडब्ल्यू, क्या Apache Ivy है? मेवेन के निर्भरता प्रबंधन को समझने के लिए चींटी को विस्तारित करना?

+0

+1 अपाचे आइवी – Goibniu

+0

के लिए मैं या तो अपाचे आइवी के बारे में पता नहीं है। क्या यहां कुछ और पुस्तकालयों को कॉपी करना संभव है? – Mot

+1

@mklhmnn मैंने कभी आइवी की कोशिश नहीं की है। मैं एक मेवेन उपयोगकर्ता हूं जो कभी-कभी चींटी का उपयोग करता है, दूसरी तरफ नहीं, इसलिए मैं आइवी के लिए लक्षित दर्शक नहीं बनूंगा।लेकिन यहां फीचर्स पेज से उद्धरण दिया गया है: 'अपाचे आइवी का उपयोग अपाचे एंटी बिल्ड फाइलों पर अपाचे मैवेन ™ की निर्भरता प्रबंधन सुविधा लाने के लिए किया जा सकता है, जो आप पहले से ही अपाचे चींटी का उपयोग करते हैं और जो अपाचे सेट अप नहीं करना चाहते हैं मेवेन प्रोजेक्ट लेकिन अपाचे आइवी वहां नहीं रुकता है, यह कई और बेहतरीन सुविधाएं प्रदान करता है! ' http://ant.apache.org/ivy/features.html –

4

यह संभव है, आपको maven-ant-tasks का उपयोग करना चाहिए।

विशेष रूप से इसके dependencies चींटी कार्य। इस सेटअप के साथ कोई मेवेन स्थापित करने की आवश्यकता नहीं है।

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    name="download-dependency" 
    basedir="." 
    default="download-dependency" 
    xmlns:artifact="antlib:org.apache.maven.artifact.ant" 
> 
    <target name="download-dependency"> 

    ... define properties ... 

    <taskdef 
     resource="org/apache/maven/artifact/ant/antlib.xml" 
     uri="antlib:org.apache.maven.artifact.ant" 
    /> 

    <artifact:dependencies> 
     <localRepository path="${local-repo.dir}"/> 
     <remoteRepository id="central" url="${repository-uri}"/> 
     <dependency 
     groupId="${groupId}" 
     artifactId="${artifactId}" 
     version="${version}" 
     type="${type}" 
     classifier="${classifier}" 
     scope="runtime" 
     /> 
    </artifact:dependencies> 
    </target> 
</project> 

आपकी परियोजना में केवल एक ही बाइनरी जांचनी चाहिए maven-ant-tasks.jar

वास्तव में हमारी परियोजना में मैं अलग खजाने के लिए उपयोग केंद्रीकृत करने के लिए और भी कुछ बाइनरी हमारे पर्यावरण के लिए अद्वितीय बनाए रखने Sonatype Nexus (documentation) Maven भंडार प्रबंधक का इस्तेमाल किया। नेक्सस की सहायता से मैं सिर्फ ज्ञात यूआरएल से चींटी <get> कार्य के साथ maven-ant-tasks.jar लाता हूं। आपको नेक्सस का उपयोग करने की ज़रूरत नहीं है, लेकिन यह बहुत तेजी से बढ़ता है, क्योंकि यह आपके डेवलपर मशीनों के करीब बाइनरी कैश करता है।

2

आइवी सिर्फ इस करता है, जब वह खुद को bootstraps:
http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml

<property name="ivy.install.version" value="2.0.0-beta1"/> 
<property name="ivy.jar.dir" value="lib"/> 
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/> 
<target name="resolve" unless="skip.download"> 
    <mkdir dir="${ivy.jar.dir}"/> 
    <echo message="installing ivy..."/> 
    <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true"/> 
</target> 
संबंधित मुद्दे