2012-10-08 6 views
6

मेरे पास मूल परियोजना के साथ पारंपरिक मैवेन सेटअप है और उप-परियोजनाओं के कई मॉड्यूल हैं। जब मैं mvn deploy करता हूं, तो अनुक्रम (गहराई-प्रथम) में प्रत्येक प्रोजेक्ट के लिए deploy तक पूर्ण जीवन चक्र (test सहित) चलाता है। यदि कोई भी परियोजना निर्माण करने में विफल रहता है तो मैं किसी भी उपप्रोजेक्ट को तैनात करने से बचना चाहता हूं। दूसरे शब्दों में मैं पूरे पेरेंट प्रोजेक्ट के deploy को "सब कुछ या कुछ नहीं" चाहूंगा। क्या इसे प्राप्त करने का कोई तरीका है?मेवेन पेरेंट प्रोजेक्ट को उनमें से किसी भी को तैनात करने से पहले सभी मॉड्यूल का परीक्षण करें

उत्तर

3

: यहाँ स्क्रिप्ट है।

आप जेनकींस उपयोग कर रहे हैं, वहाँ है कि एक के बाद निर्माण के रूप में अपने सभी कलाकृतियों (या बहुत बाद निर्माण) की तैनाती होगी कार्रवाई (बहुत ज्यादा है जो भंडार प्रबंधक आप का उपयोग मन नहीं करता है) एक देरी तैनाती प्लगइन

है

अंत में, MRM-Maven-प्लगइन @ codehaus के लिए मेरे मध्यम लंबी अवधि के लक्ष्यों में से एक है, ताकि आप

mvn mrm:catch-deploy deploy mrm:push-deploy 

लेकिन की तरह कुछ करने के लिए सक्षम हो जाएगा तैनाती की स्थानीय मचान अनुमति देने के लिए है कि आखिरी बार अभी तक लिखा नहीं है!

+0

मैं इस के लिए स्वीकार्य उत्तर बदल रहा हूं क्योंकि मुझे लगता है कि आप इसे मैवेन के बजाय सीआई सर्वर का उपयोग करने का सुझाव देने का अधिकार रखते हैं, यही वह दृष्टिकोण है जिसे मैं लेने जा रहा हूं। – Ramon

+0

स्टीफन, जो जेनकींस प्लगइन आप देरी से तैनात करने के लिए जिक्र कर रहे हैं? –

+0

किसी भी विशिष्ट प्लगइन का जिक्र नहीं है –

8

मैवेन स्वयं ऐसा नहीं कर सकता (अभी तक)। वर्तमान में, निर्माण प्रक्रिया प्रत्येक मॉड्यूल पर व्यक्तिगत रूप से सभी लक्ष्यों को चलाती है।

mvn clean install && mvn deploy -DskipTests=true 

पहली बार चलाने सब कुछ बनाता है: वहाँ लक्ष्य बड़ी तस्वीर देखने की अनुमति देने के लिए योजना है, लेकिन वह शायद Maven 4.

के लिए है इस का मतलब समय में, आप एक छोटे से खोल स्क्रिप्ट का उपयोग कर सकते हैं। दूसरा रन ज्यादा नहीं करेगा (सभी कोड पहले ही संकलित हैं और लंबे परीक्षण छोड़ दिए गए हैं), इसलिए यह बहुत तेज़ है।

मैं वास्तव में इस दृष्टिकोण को प्राथमिकता देता हूं क्योंकि मेरी स्क्रिप्ट मेरी कंपनी के कैश के लिए किसी मौजूदा distributionManagement तत्वों को भी प्रतिस्थापित करती है। इसका मतलब है कि मैं मूल पीओएम में कोई भी बदलाव करने की आवश्यकता के बिना मेरी कंपनी के लिए किसी भी परियोजना को तैनात कर सकता हूं। अपने दूरस्थ भंडार एक Sonatype नेक्सस प्रो उदाहरण है, तो नेक्सस प्रो की "स्टेजिंग" सुविधा भंडार उचित करने के लिए परमाणु प्रकाशित करने के लिए अनुमति देगा

#!/bin/bash 

if [[ ! -e pom.xml ]]; then 
    echo "Missing pom.xml" 1>&2 
    exit 1 
fi 

sed \ 
    -e '/<distributionManagement>/,/<\/distributionManagement>/d' \ 
    -e '/<\/project/d' \ 
    pom.xml > pom-deploy.xml || exit 1 

cat >> pom-deploy.xml <<EOF 


    <!-- ADDED BY $0 --> 
    <distributionManagement> 
     ... whatever you need ... 
    </distributionManagement> 
</project> 
EOF 

mvn -f pom-deploy.xml clean install && \ 
    mvn -f pom-deploy.xml deploy -DskipTests=true && \ 
    rm pom-deploy.xml 

exit 0 

gist

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