2010-03-24 14 views
17

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

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

क्या यह संभव है?

धन्यवाद

+0

Maven नहीं है क्रम में एक ही जीवन चक्र चरण वे पोम में सूचीबद्ध हैं करने के लिए बाध्य प्लगइन लक्ष्यों को अंजाम? बस एक अनुमान, परीक्षण के लायक हो सकता है ... –

+0

पता नहीं ... मैं इसे – Yaneeve

उत्तर

13

प्लगइन्स एक ही चरण करने के लिए बाध्य उसी क्रम के रूप में वे पोम में सूचीबद्ध हैं में मार डाला जाना चाहिए। कुछ परिस्थितियों में (उदाहरण के लिए यदि आप एक ही प्लगइन को दो बार चरण में एंट्रिन प्लगइन की तरह बांधते हैं), ऐसा नहीं हो सकता है लेकिन यह एक बग है (MNG-2258 और संबंधित समस्या MNG-3719 देखें)।

+0

पर आज़मा दूंगा लेकिन यदि आप उन्हें असंबंधित ब्लॉक में निर्दिष्ट करते हैं, जैसे सामान्य बिल्ड ब्लॉक बनाम एक बिल्ड ब्लॉक जो भाग है प्रोफाइल ब्लॉक का? प्रोफ़ाइल ब्लॉक में कुछ प्लगइन्स हो सकते हैं जिन्हें प्लगइन ब्लॉक में चलाने के बाद चलाना चाहिए, लेकिन अन्य नहीं हो सकते हैं। – Matthias

+9

ऐसा नहीं होता है (कम से कम मेवेन 3.0.4 में)। मेरे पास दो प्लगइन हैं जो उत्पन्न स्रोतों के लिए निष्पादित निष्पादन के साथ हैं, जो पहले 6 प्लगइन की सूची में सूचीबद्ध हैं और दूसरा सूचीबद्ध अंतिम है। हालांकि, अंतिम सूचीबद्ध एक (जो पहले सूचीबद्ध एक पर निर्भर करता है) हमेशा पहले निष्पादित करता है। – matt5784

+0

matt5784 के साथ सहमत हैं, यह कष्टप्रद है :( –

6

मुझे एक ही समस्या थी। How to perform ordered tasks in Maven2 build पर देखें। किसी कारण से किसी चरण से बंधे विभिन्न लक्ष्य एक हैश मानचित्र या अन्य अनियंत्रित संरचना में संग्रहीत होते हैं जो निष्पादन आदेश को यादृच्छिक बनाता है। मेरा समाधान कार्यों को विभिन्न चरणों में फैलाना था, लेकिन मुझे नहीं लगता कि आपके मामले में इसके लिए बहुत अधिक संभावना है (एनएसआईएस पैकेजिंग पूर्व एकीकरण परीक्षण नहीं है)। आप निम्न में से एक कर सकता है:

1) अपनी किस्मत की कोशिश करें और देखें कि Maven आप के लिए सही क्रम chosses (आप शायद करने की कोशिश की पहले से ही उस)

2) स्टैंडअलोन प्लगइन का उपयोग - बाहर लक्ष्य को चलाने जीवन चक्र। कुछ ऐसा: एमवीएन पैकेज org.codehaus.mojo: nsis-maven-plugin: 1.0: संकलित करें।

3) उन्हें मॉड्यूल में अलग करें: एक पैरेंट पोम जिसमें दो उप मॉड्यूल हैं, एक - आपका युद्ध प्रोजेक्ट और दूसरा एनएसआईएस प्रोजेक्ट के लिए।

4) प्रकार को बदलकर एक कस्टम जीवन चक्र का उपयोग करें, अपने मामले में आप "exe" का उपयोग कर सकते हैं। यह एक कस्टम प्लगइन एक्सटेंशन (guide to using extension)

5) jetspeed-mvn-maven-plugin का उपयोग करके किया जाता है। मैंने कभी इसका इस्तेमाल नहीं किया है लेकिन यह आपकी आवश्यकताओं के लिए प्रासंगिक लगता है।

उम्मीद है कि यह आपको नए विचार देता है।

रोनेन

+0

धन्यवाद, लेकिन डिफ़ॉल्ट जीवन चक्र @ पास्कल के साथ कुछ "कंक" को छोड़कर सही – Yaneeve

+1

है जो कि "कंक" नहीं हैं। असल में यदि आप मेवेन से पूछते हैं तो वे आपको बताएंगे कि नंबर 3 "मैवेन वे" के साथ सबसे अच्छा है जो मॉड्यूल को अलग करता है और जब आप इसके बारे में सोचते हैं, तो यह बहुत समझ में आता है कि वेब एप्लिकेशन बनाना और एक इंस्टॉलर प्रोजेक्ट दो अलग-अलग चीजें हैं। – rperez