2011-07-06 20 views
11

में मैं इस तरह Maven में एक बहु परियोजना है:एक बहु परियोजना के लिए लागू निर्माण क्रम Maven

paren-project 
    -> plugin-project 
    -> testbed-project 

plugin परियोजना एक जार उत्पन्न करता है, जो मैन्युअल testbed की एक विशिष्ट उपनिर्देशिका में कॉपी किया जाता है (का उपयोग करते हुए जो कुछ भी एम्बेडेड स्क्रिप्ट जैसे या )। महत्वपूर्ण बात: मैं नहीं चाहता कि प्लगइन जेएआर टेस्टबेड के क्लासपाथ में हो।

लेकिन मुझे टेस्टबेड प्रोजेक्ट से पहले प्लगइन प्रोजेक्ट को बनाने के लिए मजबूर करने का समाधान नहीं मिला। यदि मैंने प्लगइन प्रोजेक्ट को टेस्टबेड प्रोजेक्ट की निर्भरता के रूप में सेट किया है, तो इसे क्लासपाथ में जोड़ा जाता है।

कोई समाधान, या मुझे , या जैसी बिल्ड सिस्टम पर स्विच करना है?

उत्तर

18

के रूप में यह http://maven.apache.org/guides/mini/guide-multiple-modules.html

रिएक्टर निर्माण में एक और मॉड्यूल पर

Because modules within a multi-module build can depend on each other, 
it is important that The reactor sorts all the projects in a way that 
guarantees any project is built before it is required. 

The following relationships are honoured when sorting projects: 
  1. परियोजना निर्भरता छंटाई में उल्लेख किया गया है
  2. प्लगइन घोषणा जहां प्लगइन निर्माण में एक और मॉड्यूल
  3. प्लगइन एक और मॉड्यूल पर निर्माण में एक और मॉड्यूल पर निर्माण
  4. आदेश मॉड्यूल तत्व में घोषित में निर्भरता
  5. निर्माण विस्तार घोषणा है (कोई अन्य अगर नियम लागू होता है)

ध्यान दें कि केवल "instantiated" संदर्भ उपयोग किया जाता है - dependencyManagement और pluginManagement तत्वों रिएक्टर सॉर्ट क्रम में होने वाले बदलाव का कारण नहीं बनेगा

मुझे आशा है कि यह आपकी आवश्यकता को प्राप्त करने में मदद कर सकता है।

सम्मान,

चार्ली च।

+0

धन्यवाद, मैं मॉड्यूल टेस्टबेड से पहले उन्हें घोषित करके टेस्टबेड से पहले कोई रिश्ते नहीं घोषित करता हूं और प्लगइन बनाने में सफल रहता हूं। – Kartoch

6

मेवेन एक बहुमुखी प्रणाली है। स्विच करने की कोई ज़रूरत नहीं है।

आप इस तरह निर्भरता जोड़ सकते हैं:

<dependency> 
    <groupId>group</groupId> 
    <artifactId>artifact</artifactId> 
    <optional>true</optional> 
</dependency> 

इस तरह, निर्भरता classpath में शामिल नहीं किया जाएगा।

और पढ़ें के बारे में Optional Dependency

+0

वैकल्पिक ट्रांजिट रिश्ते के बारे में है, इस समस्या के लिए कोई उपयोग नहीं है। – Kartoch

+0

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

+0

कार्तोक, वैकल्पिक निर्भरता क्लासपाथ में शामिल नहीं है, लेकिन रिएक्टर के वर्गीकरण में परिवर्तन करता है। तो समाधान मान्य है। – otaviodecampos

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