2010-02-13 15 views
6

पृष्ठभूमि: मैं एक मेवेन प्रोजेक्ट में एक कार्यात्मक परीक्षण मॉड्यूल स्थापित कर रहा हूं। हम परीक्षण के लिए maven-jetty-plugin का उपयोग करते हैं।जेटी कैसे चलाएं: मेवेन निर्देशांक द्वारा परिभाषित युद्ध का उपयोग करके युद्ध-युद्ध?

मुझे जेटी प्लगइन as described here (Failsafe प्लगइन के साथ अच्छी तरह से खेलने के लिए) स्थापित किया गया है, लेकिन मैं जो करना चाहता हूं वह जेटटी का उपयोग करके हमारे मुख्य वेब मॉड्यूल से युद्ध आर्टिफैक्ट को तैनात कर रहा है (जिसे अभी इंस्टॉल किया गया है जब कार्यात्मक परीक्षण मॉड्यूल चल रहा है तब तक स्थानीय मेवेन रेपो में)।

जेट्टी प्लगइन का run-war goal में <webApp> तत्व है जो तैनात करने के लिए युद्ध के लिए एक स्ट्रिंग पथ लेता है। मैं अपने वेब मॉड्यूल द्वारा परिभाषित मेवेन निर्देशांक का उपयोग करके तैनात करने के लिए युद्ध को अधिक निर्दिष्ट करता हूं। क्या इसे करने का कोई तरीका है?

संभावित समाधानों:

  1. Section 4.13 of "Better Builds with Maven" एक युद्ध तैनात करने के लिए माल का उपयोग कर का वर्णन करता है Maven निर्देशांकों का उपयोग कर निर्दिष्ट, लेकिन वह गंभीर है overkill यह देखते हुए कि हम घाट का उपयोग कर रहे हैं।
  2. अधिक उचित आईएमओ निर्भरता का उपयोग कर रहा है: कार्यात्मक परीक्षण मॉड्यूल की लक्ष्य निर्देशिका में एक निश्चित पथ पर बस-निर्मित और स्थापित युद्ध आर्टिफैक्ट की प्रतिलिपि बनाने के लिए कॉपी करें, जिसे मैं जेटी प्लगइन के <webApp> कॉन्फ़िगरेशन तत्व में प्रदान कर सकता हूं।

उत्तर

9

घाट प्लगइन के रन-युद्ध लक्ष्य एक तत्व है जो तैनात करने के लिए एक युद्ध के लिए एक स्ट्रिंग पथ लेता है। मैं अपने वेब मॉड्यूल द्वारा परिभाषित मेवेन निर्देशांक का उपयोग करके तैनात करने के लिए युद्ध को अधिक निर्दिष्ट करता हूं। क्या इसे करने का कोई तरीका है?

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

धारा के 4.13 "बेटर Maven के साथ बनाता है" कार्गो का उपयोग कर एक युद्ध को तैनात करने, Maven निर्देशांकों का उपयोग कर निर्दिष्ट

हाँ, कार्गो एक स्वच्छ तरीके से ऐसा कर सकते हैं वर्णन करता है।

लेकिन यह गंभीर ओवरकिल दिया गया है कि हम जेटी का उपयोग कर रहे हैं।

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

अधिक उचित IMO उपयोग कर रहा है निर्भरता: कार्यात्मक परीक्षण मॉड्यूल के लक्ष्य निर्देशिका

कोई अपराध लेकिन अपने पूरे प्रश्न आवाज़ में एक निश्चित पथ के लिए सिर्फ निर्मित और स्थापित युद्ध विरूपण साक्ष्य को कॉपी करने की प्रतिलिपि थोड़ा सा: मेरे पास एक हथौड़ा है, यह एक नाखून के लिए ठीक था, क्या मैं इसे स्क्रू के लिए उपयोग कर सकता हूं, जिसके कारण एक स्क्रू ड्राइवर एक गंभीर ओवरकिल लगता है? इस प्रश्न का उत्तर देने के लिए (जो कि आप किसी भी तरह से कह रहे हैं), आप dependency:copy का उपयोग कर सकते हैं और पूरी चीज मेवेन जेट्टी प्लगइन के साथ काम कर सकते हैं, लेकिन यह एक हैक है (और चूंकि आप वास्तव में कोई सवाल नहीं पूछ रहे हैं, मुझे लगता है आप इस पर एक राय चाहते थे)। बेशक अंतिम निर्णय अंतर्गत आता है आप के लिए :)

शायद ज़रुरत पड़े, यहाँ मैं कैसे कार्गो के साथ इस को लागू होता है:

<dependencies> 
    <dependency> 
    <groupId>war group id</groupId> 
    <artifactId>war artifact id</artifactId> 
    <type>war</type> 
    <version>war version</version> 
    </dependency> 
    ... 
</dependencies> 
... 
<build> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.cargo</groupId> 
     <artifactId>cargo-maven2-plugin</artifactId> 
     <configuration> 
     <!-- Container configuration --> 
     <container> 
      <containerId>jetty6x</containerId> 
      <type>embedded</type> 
     </container> 
     <!-- Configuration to use with the container or the deployer --> 
     <configuration> 
      <deployables> 
      <deployable> 
       <groupId>war group id</groupId> 
       <artifactId>war artifact id</artifactId> 
       <type>war</type> 
       <properties> 
       <context>war context</context> 
       </properties> 
      </deployable> 
      </deployables> 
     </configuration> 
     <!-- Don't wait, execute the tests after the container is started --> 
     <wait>false</wait> 
     </configuration> 
     <executions> 
     <execution> 
      <id>start-container</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
      <goal>start</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>stop-container</id> 
      <phase>post-integration-test</phase> 
      <goals> 
      <goal>stop</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    ... 
    </plugins> 
    ... 
</build> 

और मुझे नहीं लगता कि यह निष्पक्ष एक के रूप में योग्य हो सकता है "है गंभीर ओवरकिल "।

+0

'गंभीर ओवरकिल' टिप्पणी मेरे प्रारंभिक रूप से देखे जाने वाले कार्गो से केवल Geronimo के संयोजन के रूप में उपयोग की गई थी - जिस बिंदु पर, मैंने एक तैनाती उपकरण होने का अनुमान लगाया, न कि वेबपैप कंटेनर (जिसे मैंने पहले नहीं सुना था कल, * शग *)। वैसे भी, आप निश्चित रूप से सही हैं, कार्गो जाने का रास्ता था, और जिस प्लगइन कॉन्फ़िगर को आपने ऊपर साझा किया था वह 99% था जो मुझे चाहिए था। सहायता और स्पष्टीकरण के लिए धन्यवाद। – cemerick

+0

@ चास कोई समस्या नहीं है। मुझे खुशी है कि मैंने इस बिंदु को तब स्पष्ट किया। सौभाग्य। –

संबंधित मुद्दे