2012-09-26 34 views
5

मैं निम्नलिखित परियोजनाओं एक फ्लैट संरचित तरीके में आयोजित:Maven बहु मॉड्यूल परियोजना और जेनकींस

parentProject 
+-pom.xml 

projectWeb <depends on libraryA and libraryB> 
+-pom.xml 

libraryA 
+-pom.xml 

libraryB 
+-pom.xml 

pom.xml parentProject अंदर अन्य मॉड्यूल और अपनी विरासत और dependencyManagement के लिए इस्तेमाल के लिए संदर्भ है, यहाँ एक टुकड़ा है:

<project> 
    .... 
    <modules> 
     <module>../projectWeb</module> 
     <module>../libraryA</module> 
     <module>../libraryB</module> 
    </modules> 
    <dependencyManagement> 
    ... 
    </dependencyManagement> 
    <build> 
    ... 
    </build> 
    .... 
</project> 

जेनकींस में मैं प्रत्येक परियोजना के लिए एक Maven काम है, और इसे ठीक काम करता है जब मैं parentProject, यानी निर्माण। modules अनुभाग में संदर्भित प्रत्येक परियोजना का निर्माण करता है। मेरी समस्या यह है कि जब मैं libraryA में एसवीएन में बदलाव करता हूं, तो मुझे उम्मीद है कि लाइब्रेरीए के निर्माण के बाद, projectWeb को पुनर्निर्माण के लिए पुनर्निर्माण किया जाएगा, लेकिन ऐसा नहीं हुआ। कोई भी जानता है कि मैं क्या गलत कर रहा हूं?

अग्रिम धन्यवाद।

संपादित

जब मैं parentProject\pom.xml से modules अनुभाग निकालने के लिए, यह के रूप में काम करता है espected, लेकिन मैं ढीला एक माता पिता पोम होने के एकत्रीकरण लाभ।

उत्तर

0

यह जेनकींस नौकरी में कॉन्फ़िगर किया जाना चाहिए। देखें "libraryA काम"/"विन्यास"/"ट्रिगर बिल्ड"/"के बाद अन्य परियोजनाओं का निर्माण कर रहे हैं बनाएँ"

+0

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

1

ऐसा लगता है कि आपको दो काम करने के लिए अपने माता-पिता पोम पूछ रहे हैं की तरह:

  1. सेट करें निर्भरता प्रबंधन सामान
  2. सकल अपने निर्माण

यह आम तौर पर बेहतर है अगर आप इस दो poms में बाहर विभाजित - # 1 के लिए एक माता पिता पोम और # 2 के लिए एक समेकित पोम। इसके बाद आप कुछ की तरह होगा ..

[root dir] aggregate pom.xml 
+ /parent 
+ /web 
+ /libA 
+ /libB 

अधिक जानकारी के लिए इस उत्तर देखें: https://stackoverflow.com/a/3301162/211993

फिर आप रूट निर्देशिका की जाँच करने और चलाने "स्वच्छ mvn स्थापित"

+2

क्या आप कृपया विस्तार से बता सकते हैं कि "यदि आप विभाजित होते हैं तो यह आमतौर पर बेहतर होता है ..."? मैं यह नहीं कह रहा हूं कि यह नहीं है लेकिन मुझे समझ में नहीं आता कि यह बेहतर क्यों है। दुर्भाग्यवश, मैंने इसे आपके द्वारा लिंक किए गए उत्तर से नहीं समझा। धन्यवाद! – Ittai

+1

तो, शुरुआत में, यह केवल चिंताओं को अलग करने में मदद करता है - एग्रीगेटर उस क्रम के लिए ज़िम्मेदार है जिसमें मॉड्यूल बनाए जाते हैं, माता-पिता जिम्मेदार निर्भरता संस्करण और एसएमएम कनेक्शन विवरण जैसी चीजें हैं। – dan

+1

इसके अलावा, मैंने ऐसे उदाहरण देखे हैं जहां लोगों ने अपने माता-पिता को सामान्य भागों में तोड़ दिया है, जो तब अन्य माता-पिता के लिए माता-पिता बन जाते हैं। कहें, उदाहरण के लिए, आपके पास कुछ परियोजनाएं हैं जो हाइबरनेट का उपयोग करती हैं, आप संस्करण के उस समूह को हाइबरनेट पैरेंट पोम में खींच सकते हैं, और उसके बाद इसे "सुपर पैरेंट" के रूप में उपयोग कर सकते हैं (जैसा कि, मैंने अभी यह वाक्यांश बनाया है) आपको कई परियोजनाओं में हाइबरनेट लाइब्रेरी के लगातार संस्करण प्रदान करते हैं जो अन्यथा जुड़े नहीं हैं। लेकिन सुनिश्चित करें कि आप वास्तव में उस साझा दृष्टिकोण चाहते हैं; आप एक साथ कई परियोजनाओं को जोड़ रहे हैं जो शायद वांछनीय नहीं हो सकता है। – dan

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