2009-09-21 13 views
38

हम अपने बड़े-आश उत्पाद के लिए मेवेन का उपयोग करते हैं। हमारे सभी कलाकृतियों को मैवेन तैनाती लक्ष्य का उपयोग करके साझा संग्रह संग्रह में तैनात किया जाता है। अब मैं एक तीसरे पक्ष के उत्पाद को एकीकृत कर रहा हूं जिसमें चींटी निर्माण है। मुझे पता है कि एंटरन प्लगइन का उपयोग करके मैवेन से चींटी लक्ष्यों को कैसे कॉल किया जाए, लेकिन मुझे यकीन नहीं है कि इस उदाहरण में पोम कैसे सेट करें। मैं नहीं चाहता कि मैवेन वास्तव में एक आर्टिफैक्ट उत्पन्न करे, लेकिन मैं चाहता हूं कि यह उस आर्टिफैक्ट को खींचें जो कि चींटी द्वारा तैनात किया गया था जब मैवेन तैनाती लक्ष्य चलाया जाता है।मैवेन के साथ चींटी निर्माण कैसे लपेटें?

मैं build.xml के निकट पोम रखने की योजना बना रहा हूं। पोम पैकेज आर्टिफैक्ट बनाने के लिए उपयुक्त समय पर चींटी लक्ष्य को कॉल करने के लिए पैकेज लक्ष्य में एंटर प्लगइन का उपयोग करेगा।

सवाल:

एक) मैं एक .war फ़ाइल बनाने रहा हूँ, लेकिन यह के माध्यम से चींटी, नहीं Maven बनाई गई है, तो मतलब नहीं है पोम में एक युद्ध पैकेजिंग प्रकार हो रही है। मेरा पैकेजिंग प्रकार क्या होना चाहिए?

बी) मैं तैनाती के लक्ष्य के लिए अपनी चींटी आउटपुट निर्देशिका से आर्टिफैक्ट खींचने के लिए कैसे मेवेन का कारण बन सकता हूं?

सी) यदि ए और बी के लिए कोई अच्छा जवाब नहीं है, तो क्या एंटी कार्य हैं जो मेरे .war artifact को साझा भंडार में प्राप्त करने के लिए मैवेन तैनाती कार्यक्षमता को दोहराते हैं?

उत्तर

51

आप चींटी निर्माण का आह्वान करने के लिए maven-antrun-plugin का उपयोग कर सकते हैं। फिर प्रोजेक्ट में चींटी द्वारा उत्पादित जार को संलग्न करने के लिए build-helper-maven-plugin का उपयोग करें। संलग्न आर्टिफैक्ट को पोम के साथ स्थापित/तैनात किया जाएगा।
यदि आप पैकेजिंग pom के साथ अपनी परियोजना निर्दिष्ट करते हैं, तो मैवेन चींटी निर्माण के साथ संघर्ष नहीं करेगा।

नीचे दिए गए उदाहरण में, ant build.xml को src/main/ant में माना जाता है, compile लक्ष्य है, और आउटपुट ant-output.jar पर है।

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
    <execution> 
     <phase>process-resources</phase> 
     <configuration> 
     <tasks> 
      <ant antfile="src/main/ant/build.xml" target="compile"/> 
     </tasks> 
     </configuration> 
     <goals> 
     <goal>run</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
    <execution> 
     <id>add-jar</id> 
     <phase>package</phase> 
     <goals> 
     <goal>attach-artifact</goal> 
     </goals> 
     <configuration> 
     <artifacts> 
      <artifact> 
      <file>${project.build.directory}/ant-output.jar</file> 
      <type>jar</type> 
      </artifact> 
     </artifacts> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

बहुत उपयोगी उत्तर रिच, एक बार जब मैं इसे अपने प्रोजेक्ट में काम कर लेता हूं तो मैं आपका जवाब स्वीकार करूंगा। – digitaljoel

+0

महान सलाह। दुर्भाग्य से यह WAR फ़ाइलों के लिए काम नहीं करता है - मेवेन युद्ध प्लगइन संलग्न युद्ध कलाकृतियों की परवाह नहीं करता है। – mvmn

+0

पीएस मुझे माफ़ कर दो, जब मैं पैकेजिंग विनिर्देश को पोम में बदलता हूं तो यह वास्तव में ठीक काम करता है - संलग्न WAR अब जेनरेट किए गए WAR में हस्तक्षेप नहीं करता है, और इस प्रकार रेपो में ठीक से जोड़ा जाता है। – mvmn

3

आप वास्तव में multiple ant run goals का उपयोग कर के रूप में मैं एक अलग प्रश्न में लिखा द्वारा Maven के साथ एक चींटी परियोजना लपेट कर सकते हैं। मान लें कि आपकी मौजूदा चींटी परियोजना को साफ और निर्माण कार्य है, यह प्रोजेक्ट को लपेटने का एक उपयोगी तरीका हो सकता है ताकि आप मेवेन लक्ष्यों का उपयोग कर सकें और इसे मौजूदा एंटी कोड में मैप कर सकें।

+0

धन्यवाद साल, अच्छा जवाब। मेरे ए, बी, और सी को ऊपर से संबोधित नहीं करता है, लेकिन वैसे भी सहायक है। – digitaljoel

0

इस संदर्भ लें: Why you should use the Maven Ant Tasks instead of Maven or Ivy

और विशेष रूप से, कैसे चींटी से Maven लक्ष्य आह्वान करने के लिए इस उदाहरण में पाया जा सकता है:

http://code.google.com/p/perfbench/source/browse/trunk/perfbench/grails-gorm/build.xml

आप ऊपर जानकारी के साथ

क्या हासिल करना सक्षम होना चाहिए आप की जरूरत है। अगर आपका कोई प्रश्न हैं, तो मुझे से पूछें।

1
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-install-plugin</artifactId> 
    <version>2.3.1</version> 
    <executions> 
     <execution> 
      <id>install-library</id> 
      <phase>install</phase> 
      <goals> 
       <goal>install-file</goal> 
      </goals> 
      <configuration> 
       <groupId>x.x</groupId> 
       <artifactId>ant-out-atifacts</artifactId> 
       <version>${project.version}</version> 
       <file>ant-output.jar</file> 
       <packaging>zip</packaging> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
संबंधित मुद्दे