5

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

मैं ग्रहण परियोजना के साथ निरंतर एकीकरण का उपयोग कैसे करूं?

क्या ऐसा करने के लिए कोई कमांड लाइन तरीका है?

क्या कोई ऐसा बिल्ड सर्वर है जो पहले से ही इसका समर्थन करता है?

उत्तर

2

मुझे एक अच्छा समाधान खोजने में कामयाब रहा। मैवेन और एक्लिप्स

ग्रहण-> परियोजना गुण-> जावा बिल्ड पथ-> स्रोत बॉक्स को अनचेक करें: "आउटपुट स्रोत के लिए फ़ोल्डर्स को अनुमति दें फ़ोल्डर्स "

इससे आपकी परियोजना एक से अधिक आउटपुट पथ हो सकेगी और ग्रहण कक्षा वर्ग के हिस्से के रूप में परीक्षण-वर्गों की रिपोर्ट करना शुरू कर देगा। Infinitest अब यह पाता है और परीक्षण चलाना शुरू होता है!

सभी मैंने किया था आधिकारिक Maven ग्रहण प्लगइन का उपयोग और

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.5</version> 
     <!-- <scope>provided</scope> --> 
    </dependency> 

    <dependency> 
     <groupId>org.infinitest</groupId> 
     <artifactId>infinitest</artifactId> 
     <scope>test</scope> 
     <version>4.0</version> 
    </dependency> 

</dependencies> 
4

हाँ, ग्रहण Maven2 प्लगइन अब के लिए बकवास है। लेकिन मैं आपको वहां लटकने का सुझाव दूंगा, मेवेन 2 का उपयोग करने के लिए बहुत लाभ है, इसलिए यह वास्तव में संतुलित हो जाता है।

हम क्या करते हैं, यह है कि हम ग्रहण को विकसित करने के लिए उपयोग करते हैं और केवल निर्भरताओं का प्रबंधन करने के लिए मेवेन का उपयोग करते हैं। बाकी सब कुछ कमांड लाइन पर "एमवीएन" चलाकर किया जाता है। हम अपने स्वयं के एकीकरण परीक्षण परियोजनाओं (...- itest) में परीक्षण करते हैं और 2 चरणों में निर्माण करने के लिए निरंतर एकीकरण सर्वर रखते हैं, पहले वास्तविक कोड बनाते हैं, और दूसरा पास बिल्ड करते हैं और सबसे पुरानी परियोजनाओं को चलाते हैं। (प्रथम पास (शुद्ध निर्माण) आम तौर पर बहुत जल्दी है, और एकीकरण परीक्षण (परीक्षण के संचालन के साथ निर्माण) आम तौर पर काफी कुछ समय लगता है।)

यहाँ mvn रन परीक्षण बनाने के लिए आदेश पंक्ति है: mvn -o verify -Ditest

के

<profiles> 
    <profile> 
    <id>integration-test</id> 
    <activation> 
     <property> 
     <name>itest</name> 
     </property> 
    </activation> 
    <build> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <executions> 
      <execution> 
       <id>itest</id> 
      </execution> 
      </executions> 
      <configuration> 
      <testSourceDirectory>src/main</testSourceDirectory> 
      <testClassesDirectory>target/classes</testClassesDirectory> 
      <forkMode>once</forkMode> 
      </configuration> 
     </plugin> 
     </plugins> 
    </build> 
    </profile> 
</profiles> 
+0

दिलचस्प विचार मेरी पोम में जोड़ना था, मैं दो परियोजनाओं में विभाजित करने के बारे में सोचा नहीं था। मैं आम तौर पर मैवेन का एक बड़ा प्रशंसक हूं, लेकिन मैंने देखा है कि निर्माण/परीक्षण चक्र थोड़ा लंबा लगता है। यह विचार चीजों को थोड़ा सा अनुमान लगा सकता है। –

0

मैं CruiseControl के साथ ग्रहण + चींटी का उपयोग कर उचित सफलता मिली है:, कहते हैं इस तरह: बेशक आप अपने माता पिता पोम में 'itest' प्रोफ़ाइल को परिभाषित करने की जरूरत है। यदि आप स्वचालन चाहते हैं, तो आपको शायद शुद्ध ग्रहण से अधिक की आवश्यकता होगी।

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