2012-02-10 13 views
7

मैं क्लाइंट/सर्वर एप्लिकेशन का परीक्षण करने और मेवेन का उपयोग बिल्ड/टेस्ट/तैनाती को संभालने के लिए कर रहा हूं। एक चरण में निष्पादन-मेवेन-प्लगइन कई बार चल रहा है

  • परीक्षण चलाने (

    1. रन एक इंस्टॉलर स्क्रिप्ट (सर्वर स्थापित करने के लिए),
    2. एक स्टार्टअप आदेश (सेवा शुरू करने के लिए) बंद लात, maven-: आवेदन का परीक्षण करने के लिए, मैं करने की जरूरत है surefire-plugin),
    3. सेवा को रोकें, और
    4. सेवा को अनइंस्टॉल करें।

    कदम 1,2,4 और 5 मेवेन-निष्पादन-प्लगइन का उपयोग करेंगे। चरण 3 मेवेन-निश्चित फ़ायरफ़ॉक्स-प्लगइन का उपयोग करेगा।

    समस्या यह है कि इन सभी 5 चरणों में 'परीक्षण' चरण में होगा। मेवेन प्लगइन को एक विशिष्ट क्रम में निष्पादित करने की अनुमति देता है। कई प्रविष्टियों का उपयोग करके निष्पादन प्लगइन कई बार चलाया जा सकता है। समस्या यह है कि मुझे 4 exec-plugin executions के बीच में surefire-plugin का उपयोग करने की आवश्यकता है।

    क्या किसी ने कभी पहले इसमें भाग लिया है, या प्लगइन और निष्पादन की संरचना कैसे करें?

  • +0

    मुझे लगता है कि आप उसे अनुकूलित नहीं कर सकते। 'maven-surefire-plugin' + 'maven-surefire-plugin' + 'maven-exec-plugin' एकमात्र तरीका है जिसे आप कर सकते हैं (जब तक कि आप अपने स्वयं के मेवेन प्लगइन को लिखने के लिए पर्याप्त बहादुर नहीं हैं जो आपके लिए यह गठबंधन करेगा)। –

    उत्तर

    4

    जो आप करने की कोशिश कर रहे हैं वह एक इकाई परीक्षण की तुलना में एकीकरण परीक्षण की तरह लगता है।

    • pre-integration-test: एकीकरण परीक्षण क्रियान्वित कर रहे हैं इससे पहले कि आवश्यक कार्रवाई करने के उपयोग के इस मामले default maven lifecycle एकीकरण परीक्षण से संबंधित तीन चरणों है। इसमें आवश्यक वातावरण स्थापित करने जैसी चीजें शामिल हो सकती हैं।
    • integration-test: यदि पर्यावरण में आवश्यक हो तो पैकेज को संसाधित और तैनात करें जहां एकीकरण परीक्षण चलाया जा सकता है।
    • post-integration-test: एकीकरण परीक्षण निष्पादित किए जाने के बाद आवश्यक क्रियाएं करें। इसमें पर्यावरण की सफाई शामिल हो सकती है।

    निश्चित प्लगइन आमतौर पर test चरण में निष्पादित करता है, लेकिन किसी अन्य चरण में निष्पादित करने के लिए पुन: कॉन्फ़िगर किया जा सकता है। pre-integration-test में निष्पादित करने के लिए आपके चरण 1 + 2 को कॉन्फ़िगर किया जा सकता है, जबकि चरण 4 + 5 को post-integration-test में निष्पादित करना होगा।

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <!-- Skip execution in test phase and execute in integration-test phase instead --> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
        <executions> 
         <execution> 
          <id>surefire-it</id> 
          <phase>integration-test</phase> 
          <goals> 
           <goal>test</goal> 
          </goals> 
          <configuration> 
           <skip>false</skip> 
          </configuration> 
         </execution> 
        </executions> 
    </plugin> 
    
    +0

    यह वह मार्ग है जो मैंने चलाया था। मुझे यकीन नहीं है कि मेवेन में प्री-टेस्ट और पोस्ट-टेस्ट चरण क्यों नहीं हैं, लेकिन एकीकरण-परीक्षण चरण का उपयोग करना पर्याप्त होगा। – SlimyTadpole

    10

    इस प्रकार मैंने निष्पादन और असफलता प्लगइन को कॉन्फ़िगर किया। मैं Sureffe का उपयोग कर रहा हूं, निश्चित रूप से सुनिश्चित करने के बजाय, निश्चित रूप से परीक्षण चरण में होने के लिए निश्चित परीक्षण अभी भी अन्य परीक्षण चला रहा है। यह पूर्व-एकीकरण चरण में चरण 1 और 2 चलाएगा (उसी चरण के लिए सूचीबद्ध कई निष्पादन दिए गए क्रम में निष्पादित होंगे), एकीकरण-परीक्षण चरण में परीक्षण चलाएं, और उसके बाद चरण 3 और 4 में साफ़ करें पोस्ट-इंटीग्रेशन चरण।

    (नोट: मैं वास्तविक स्थापना और सफाई आदेशों के स्थान पर गूंज आदेशों है)

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <executions> 
         <execution> 
          <goals> 
           <goal>integration-test</goal> 
          </goals> 
         </execution> 
        </executions> 
        <configuration> 
         <forkMode>always</forkMode> 
        </configuration> 
    </plugin> 
    
    <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>exec-maven-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>step1</id> 
          <goals> 
           <goal>exec</goal> 
          </goals> 
          <phase>pre-integration-test</phase> 
          <configuration> 
           <executable>echo</executable> 
           <arguments> 
            <argument>foo</argument> 
           </arguments> 
          </configuration> 
         </execution> 
         <execution> 
          <id>step2</id> 
          <goals> 
           <goal>exec</goal> 
          </goals> 
          <phase>pre-integration-test</phase> 
          <configuration> 
           <executable>echo</executable> 
           <arguments> 
            <argument>bar</argument> 
           </arguments> 
          </configuration> 
         </execution> 
         <execution> 
          <id>step3</id> 
          <goals> 
           <goal>exec</goal> 
          </goals> 
          <phase>post-integration-test</phase> 
          <configuration> 
           <executable>echo</executable> 
           <arguments> 
            <argument>baz</argument> 
           </arguments> 
          </configuration> 
         </execution> 
         <execution> 
          <id>step4</id> 
          <goals> 
           <goal>exec</goal> 
          </goals> 
          <phase>post-integration-test</phase> 
          <configuration> 
           <executable>echo</executable> 
           <arguments> 
            <argument>woot</argument> 
           </arguments> 
          </configuration> 
         </execution> 
        </executions> 
    </plugin> 
    
    +0

    प्लगइन का यह संस्करण किसके साथ है?मैं संस्करण 1.2.1 में निष्पादन के अंदर <कॉन्फ़िगरेशन> के साथ निष्पादित करने के लिए प्लगइन नहीं प्राप्त कर सकता – avanderw

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