2012-08-17 22 views
6

मैं अपने निरंतर एकीकरण नौकरी (हडसन) को दो चरणों में विभाजित करना चाहता हूं। (क्योंकि निर्माण और रिपोर्टिंग के साथ रनटाइम बहुत लंबा लगता है।) पहली नौकरी में, मैं अपना बहु मॉड्यूल मेवेन प्रोजेक्ट "एमवीएन पैकेज" सफलतापूर्वक बना देता हूं। फिर मैं अपने वर्कस्पेस को किसी अन्य स्थान पर कॉपी करता हूं और रिपोर्ट बनाने के लिए केवल "साइट" और/या findbugs/checkstyle/pmd के साथ प्रोजेक्ट बनाने का प्रयास करता हूं। लेकिन यह काम नहीं करता है! मेवेन मेरे submodules की निर्भरता को हल नहीं कर सकता है। (लेकिन सभी जार अपने लक्ष्य फ़ोल्डर में उपलब्ध हैं।)बहु मॉड्यूल प्रोजेक्ट पर मेवेन साइट निर्भरता को हल नहीं कर सका

उदाहरण: मेरे संरचना इस तरह दिखता है:

  • जनक
    • एक
    • बी
    • सी
    • डी

परियोजना सी निर्भरता परियोजना बी

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

क्या "एमवीएन इंस्टॉल" के बिना सबमिशन बी से निर्भरता को हल करने का कोई तरीका है? (। मैं चाहता हूँ मुझे डर है यह एक ही कोड बेस के साथ अन्य नौकरियों के लिए खतरनाक हो सकता है मेरी ci सर्वर पर ऐसा नहीं करते हैं।)

अद्यतन 08/20/12:

जड़ का पोम फ़ोल्डर:

<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> 
    <name>Foo</name> 
    <groupId>foo</groupId> 
    <artifactId>bar</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 
    <modules> 
     <module>parent</module> 
    </modules> 
</project> 

जनक पोम:

<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> 
    <name>Foo</name> 
    <groupId>foo</groupId> 
    <artifactId>parent</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 
    <modules> 
     <module>../bar-a</module> 
     <module>../bar-b</module> 
     <module>../bar-c</module> 
     <module>../bar-d</module> 
    </modules> 
    [...] 
    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>findbugs-maven-plugin</artifactId> 
       <version>2.5.1</version> 
       [...] 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-pmd-plugin</artifactId> 
       <version>2.7.1</version> 
       [...] 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.9.1</version>    
       [...] 
      </plugin> 
     </plugins> 
    </reporting> 
</project> 

बी के पोम :

<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> 
    <parent> 
     <groupId>foo</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0</version> 
     <relativePath>../parent</relativePath> 
    </parent> 
    <name>Bar B</name> 
    <artifactId>bar-b</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 
    [...] 
</project> 

सी के पोम:

<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> 
    <parent> 
     <groupId>foo</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0</version> 
     <relativePath>../parent</relativePath> 
    </parent> 
    <name>Bar C</name> 
    <artifactId>bar-c</artifactId> 
    <packaging>jar</packaging> 
    [...] 
    <dependencies> 
     <dependency> 
      <groupId>foo</groupId> 
      <artifactId>bar-b</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 
    [...] 
</project> 
+0

पोम के बिना अनुमान लगाना मुश्किल है ... लेकिन ऐसा लगता है कि निर्भरता/मॉड्यूल सही ढंग से कॉन्फ़िगर नहीं किया गया है। एमवीएन स्वच्छ साइट त्रुटियों के बिना चलना चाहिए। – khmarbaise

+0

क्या कोई एमवीएन क्लीन पैकेज त्रुटियों के बिना भी चलता है? – khmarbaise

+0

हां। "एमवीएन क्लीन पैकेज" त्रुटियों के बिना चलता है। "एमवीएन स्वच्छ साइट" नहीं। मैं बाद में एक कोड स्निपेट अपलोड करें। – user1606528

उत्तर

1

मैं काफी एक ही "लंबे समय" मुद्दा का सामना करना पड़ रहा था।

एकमात्र तरीका (मुझे लगता है) इसे अपने काम के तरीके से हल करने के लिए वास्तव में एमवीएन इंस्टॉल है, जैसा आपने सुझाव दिया था।

लेकिन समस्या वास्तव में जिस तरह से आप अपने कार्यक्षेत्र की प्रतिलिपि बनाने के साथ अलग-अलग व्यवहार करने का प्रयास करते हैं। आपको इस बात पर विचार करना चाहिए कि सीआई जितनी बार चाहें उतनी बार निर्माण और परीक्षण करेगा (प्रत्येक प्रतिबद्धता या हर घंटे), लेकिन केवल एक बार रिपोर्टिंग करें (उदाहरण के लिए प्रत्येक मध्यरात्रि)। आप रात में तेजी से निरंतर निर्माण, और सही दस्तावेज़ीकरण और रिपोर्टिंग करने में सक्षम होंगे।

इस तरह हम काम करते हैं, और यह काफी पर्याप्त है। हम इसके लिए जेनकिन्स का उपयोग करते हैं, लेकिन आप इसे हर सीआई नरम के साथ ट्रिगर कर सकते हैं)!

@hourly : mvn clean package (or install) --> from 1 to 5 minutes to run all test on all modules 
@daily : mvn clean install site --> from 15 to 35 minutes to run all test on all modules + doc + reports + PDF reports 

आप विभिन्न व्यवहारों को ट्रिगर करने के लिए प्रोफाइल का भी उपयोग कर सकते हैं, लेकिन यह इस तरह के मूल उपयोग के लिए बहुत अधिक परिष्कृत है।

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