2012-02-06 20 views
12

परिदृश्य:मैवेन में निर्भरता कैसे संकलित करें?

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

बी सी (निर्भरता) पर निर्भर करता है। बी के पोम में मैं

<dependency> .. details of project C..</dependency> . 

जोड़ा ऐसा करने से, Maven निर्भरता है कि परियोजना सी कंपाइल नहीं है सिवाय ठीक सम्मिलित करता है।

मैं परियोजना सी स्वचालित रूप से हर बार जब मैं बी संकलन

उत्तर

17

यदि आप बी बनाना चाहते हैं और स्वचालित रूप से इसकी निर्भरताएं बनाना चाहते हैं तो आप मेवेन रिएक्टर के उन्नत विकल्पों जैसे -सोसो-मेक-आश्रितों का भी उपयोग कर सकते हैं।

mvn clean install –-projects B –-also-make 

वह ए के सभी सबमिड्यूल संकलित करेगा जिसका बी पर निर्भर करता है। मैवेन रिएक्टर के उन्नत विकल्पों पर सोनाटाइप ब्लॉग पर एक उपयोगी पोस्ट है। http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/

+0

बिल्कुल मुझे क्या चाहिए! – SQC

+0

नोट: '--सोसो मेक' नहीं '- आलू-मेक-आश्रित' का उपयोग करें। उत्तरार्द्ध कुछ भी ऐसा करना है जो बी पर निर्भर करता है जबकि पूर्व कुछ ऐसा करना है जो बी इस पर निर्भर करता है: https://maven.apache.org/guides/mini/guide-multiple-modules.html –

+0

@SQC: क्या यह है निर्भरताओं का एक सबसेट बनाने के लिए संभव है? –

8

सूची परियोजना ए के पोम में बी और सी मॉड्यूल के रूप परियोजनाओं अब जब आप परियोजना एक का निर्माण, यह परियोजना बी का निर्माण करना चाहिए फिर से संकलित करने के लिए चाहते हैं और सी स्वचालित रूप से और सही क्रम में।

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
          http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>multi</groupId> 
    <artifactId>A</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 

    <modules> 
     <module>B</module> 
     <module>C</module> 
    </modules> 
</project> 

एक बहु मॉड्यूल मैवेन प्रोजेक्ट के उदाहरण के लिए this देखें।

+1

मेरे पास इस तरह का एक पोम है। यह वही नहीं है जो मैं चाहता हूं क्योंकि मैं शीर्ष परियोजना निर्देशिका से सभी परियोजनाओं को पुन: संकलित नहीं करना चाहता हूं। (मान लें कि कई मॉड्यूल सी, डी, ई, एफ और बी केवल कुछ मॉड्यूल सी और ई पर निर्भर करता है)। यद्यपि आपकी मदद के लिए – SQC

+0

+1। यह पोम कई परिस्थितियों में काफी उपयोगी है, हालांकि यह एक अलग है हालांकि। – SQC

0

मैं अक्सर इस प्रकार की समस्याओं से निपटने के लिए मेवेन रिएक्टर प्लगइन का उपयोग करता हूं। इस प्लगइन में भी कठिन आवश्यकताओं को शामिल किया गया है कि एक जटिल संरचना में कई उप मॉड्यूल के साथ एक जटिल परियोजना हो सकती है। उदाहरण के लिए link देखें।

उपरोक्त स्थितियों के लिए,

mvn reactor:make -Dmake.folders=B 

का उपयोग कर बी और सी (और यदि कोई बी के सभी निर्भरता) के निर्माण के लिए।

आशा है कि यह सहायक होगा।

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