2013-01-02 59 views
5

हम custom-pom.xml के साथ-साथ अन्य संसाधनों को मौजूदा प्रोजेक्ट में जोड़ने के लिए आंशिक आर्केटाइप बनाना चाहते हैं। कस्टम पोम का उपयोग जेनरेटेड प्रोजेक्ट में mvn -f custom-pom.xml के माध्यम से किया जाएगा।मेवेन आर्केटाइप प्लगइन - कोई आंशिक आर्केटाइप का उपयोग कैसे करें जिसमें कोई pom.xml नहीं है?

इसलिए हमारे आर्केटाइप में src/main/resources/archetype-resources/osgi-pom.xml है, लेकिन इसमें एक ही निर्देशिका में pom.xml नहीं है।

हमने archetype:generate का उपयोग मौजूदा प्रोजेक्ट पर इस आर्केटाइप को चलाने के लिए उचित रूप से पैरामीटर किया था। यह पैदा करता है:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error merging velocity templates: Unable to find resource 'archetype-resources/pom.xml' -> [Help 1] 

एक परीक्षण के रूप में, हम बनाया एक डमी archetype-resources/pom.xml तो generate लक्ष्य फिर से भाग गया। यह पैदा करता है:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (default-cli) on project standalone-pom: Don't override file /tmp/archetype/fabric-rf-server/pom.xml -> [Help 1] 

हम this example जो कोई archetype-resources/pom.xml है देखा। हम आर्केटाइप 2.0x मानक का उपयोग कर रहे हैं, हालांकि संभवतः यह रणनीति उस लेखक के लिए काम करती है लेकिन खुद नहीं।

हम इस समस्या को कैसे हल कर सकते हैं? क्या मौजूदा आंशिक परियोजना में संसाधनों को सम्मिलित करने के लिए आंशिक आर्केटाइप अनुपयुक्त है - क्या प्रोजेक्ट को गैर-मेवेन होना चाहिए?

हमने Maven Archetype plugin 2.2 documentation को खराब कर दिया है लेकिन आंशिक आर्केटीप्स और उनके विशेष व्यवहार का कोई उल्लेख नहीं है।

उत्तर

4

यह ओपी में सूचीबद्ध दूसरा त्रुटि संदेश है जो विवादित पीओएम गुणों (artifactId, groupId और version) के कारण है। archetype-resources/pom.xml से इन्हें हल करने से समस्या हल हो गई।

आंशिक आर्केटाइप के साथ वास्तव में क्या होता है मौजूदा प्रोजेक्ट में उसके पीओएम आर्केटाइप में विलय हो जाता है। तो यह संपत्ति संघर्ष मर्ज विफल होने का कारण बन रहा था।

हमने पहचाना है कि the source code की खोज के बाद एक विलय होना चाहिए।

+0

मेवेन कुछ गंभीर द्विध्रुवीय विकार के रूप में पीड़ित प्रतीत होता है। अगर मैं इसे आर्केटाइप-संसाधन/pom.xml देता हूं, तो यह मुझे बताता है कि इसे फिर से लिखना नहीं है। अगर मैं इसे नहीं देता, तो यह मुझे बताता है कि इसे इसकी जरूरत है। अगर मैं इसे खाली लेकिन खाली देता हूं, तो यह शिकायत करता है कि यह से शुरू नहीं होता है। अगर मैं इसे से शुरू करता हूं तो यह केवल चरण 1 पर वापस जाता है और मुझे pom.xml को फिर से लिखने के लिए नहीं कहता है। आप इस पकड़ 22 से कैसे दूर हो गए? – kaqqao

+0

@kaqqao यकीन नहीं है, यह बहुत समय पहले था।मेरे पास अभी भी काम करने वाली फ़ाइल है - जब आप '' जोड़ते हैं, तो मुझे लगता है कि आप सभी सामान्य नेमस्पेस guff इत्यादि शामिल हैं? तो मेरा कामकाजी एक इस से शुरू होता है: ' 4.0 .0 ' – KomodoDave

0

प्रति फ़ाइल त्रुटि ओवरराइड न करें, कि क्योंकि एक या अधिक अतिव्यापी फ़ाइलसेट,, एक ही स्थान में एक ही फ़ाइलों की प्रतिलिपि की जाँच करें अपने मूलरूप आदर्श के "achetype-metadata.xml", हटाने डुप्लिकेट config इस समस्या को हल करेंगे करने के लिए कॉन्फ़िगर है वहाँ

उदाहरण के लिए

, यदि कॉन्फ़िगर फ़ोल्डर में test.xml है, तो इसे वेग से दो बार संसाधित किया जाएगा, और दूसरी प्रक्रिया के लिए यह चेतावनी प्रिंट करेगा। यदि फ़ाइल pom.xml है, यह, निर्माण त्रुटि

<fileSet filtered="true" encoding="UTF-8"> 
    <directory>config/src</directory> 
    <includes> 
    <include>**/*.vm</include> 
    <include>**/*.xml</include> 
    </includes> 
</fileSet> 
<fileSet filtered="true" encoding="UTF-8"> 
    <directory>config</directory> 
    <includes> 
    <include>**/*.xml</include> 
    </includes> 
</fileSet> 
0

कारण होगा फ़ाइल त्रुटि ओवरराइड न करें क्योंकि वहाँ एक या अधिक अतिव्यापी फ़ाइलसेट।

डुप्लीकेट किए गए फाइलों को हटाने से समस्या हल हो जाएगी।