2010-06-13 19 views
9

ग्रहण 3.5 का उपयोग करते हुए जेडीके अनुपालन सेट करता है, जब मैं एक नया मेवेन प्रोजेक्ट बनाता हूं, m2eclipse स्वचालित रूप से जे 2SE1.4 पुस्तकालयों और कंपाइलर अनुपालन स्तर को 1.4 (परियोजना गुण> जावा कंपाइलर) में जोड़ता है। मेरी जेआरई सिस्टम लाइब्रेरी 1.6 है और मेरा डिफ़ॉल्ट कंपाइलर अनुपालन स्तर 1.6 है। मेरे पास 1.4 इंस्टॉल भी नहीं है। क्या मैं m2eclipse को अपनी डिफ़ॉल्ट सेटिंग्स का उपयोग कर सकता हूं और इसे परियोजना सेटिंग्स को संशोधित करने से रोक सकता हूं?m2eclipse 1.4

+0

@ वॉनसी @ पास्कल थिवेंट: स्पष्टीकरण के लिए धन्यवाद। हालांकि, मुझे लगता है कि m2eclipse 1.4 का डिफ़ॉल्ट कोड स्तर मानता है जब यह pom.xml फ़ाइल में निर्दिष्ट नहीं है, जबकि इंटेलिजे या नेटबीन के लिए मेवेन प्लगइन सिस्टम के जेआरई स्तर को चुनता है, जो मुझे लगता है कि अधिक तार्किक है। –

उत्तर

6

यह maven-compiler-plugin विन्यास पालन करना चाहिए:

<build> 
    [...] 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    [...] 
    </build> 

(भले ही, mentioned in this thread रूप में, यह पहलू-जे के लिए काम नहीं करेगा)

This thread हमारे भीतर m2eclipse बीच अंतर के बारे में याद दिलाता है ग्रहण, और एक मेवेन स्क्रिप्ट:

यह उल्लेख करने योग्य है कि यह केवल एकमात्र mieseclipse pm.xml से कॉन्फ़िगरेशन के अनुसार जेडीटी, एजेडीटी और डब्ल्यूटीपी जैसे ग्रहण उपकरण को कॉन्फ़िगर कर रहा है, तो "विकास मोड" के लिए ies। इस प्रकार आप सामान्य रूप से कोड और डिबग करते हैं, यूनिट परीक्षण चलाते हैं (रन के रूप में .../जुनीट टेस्ट के साथ) या वेब ऐप सर्वर पर चलाएं (जैसे .../सर्वर ऐप) चलाएं।

हालांकि यदि आप रन के रूप में रन का उपयोग करते हैं .../मेवेन बिल्ड ..., या रन/डीबग मेनू से संबंधित लॉन्च कॉन्फ़िगरेशन बनाएं, तो आप मैवेन लॉन्च करने के लिए उपयोग किए गए JVM का चयन कर सकते हैं और आपके सभी कंपाइलर कॉन्फ़िगरेशन होंगे वैसे ही सम्मानित किया जाता है जिस पर इसे कमांड लाइन में सम्मानित किया जाता है।

तो:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
     <verbose>true</verbose> 
     <fork>true</fork> 
     <executable><!-- path-to-javac --></executable> 
     <compilerVersion>1.3</compilerVersion> 
     </configuration> 
    </plugin> 
    </plugins> 

m2e (और नहीं कर सकते हैं) नहीं है बाहरी जावा संकलक का उपयोग करें, तो यह बस इन कॉन्फ़िगरेशन पैरामीटर ध्यान नहीं देगा। एम 2 केवल स्रोत/लक्ष्य मेवेन-कंपाइलर-प्लगइन मानकों को मानता है।

4

जेडीके अनुपालन स्तर मैवेन प्रोजेक्ट से व्युत्पन्न है, न कि दूसरी तरफ। दूसरे शब्दों में, आप 1.6 के स्तर का अनुपालन के लिए Maven संकलक प्लगइन विन्यस्त करने की जरूरत है और फिर m2eclipse ग्रहण के तहत उचित सेटिंग्स प्राप्त होगा:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    </configuration> 
</plugin> 

pom.xml मालिक है, नहीं m2eclipse।

+0

सरल स्पष्टीकरण। +1। मैं चिंता करना शुरू कर रहा था। एक मेवेन -2 ग्रहण प्रश्न 1 घंटे से अधिक के बाद उत्तर नहीं दिया गया। बिल्ली में पास्कल थे? ;) – VonC

+0

@ वॉनसी एलओएल! मैं खाना पक रहा हूँ :) लेकिन +1 के लिए धन्यवाद (और आपके लिए +1 भी)। –

+0

मुझे कोई समस्या है जहां ग्रहण इस विधि का उपयोग कर स्रोत/लक्ष्य संस्करण सेट को अनदेखा कर रहा है (देखें http://stackoverflow.com/questions/23602622/changed-jdk-version-in-pom-xml-but-eclipse- अभी भी का उपयोग कर-डिफ़ॉल्ट के- 1-5)। उस प्रश्न पर टिप्पणियों में सुझाव यह है कि मुझे ग्रहण की सेटिंग्स मैन्युअल रूप से बदलने की जरूरत है, जो आपके उत्तर से असहमत प्रतीत होता है। क्या कुछ बदल गया है, या मैं कुछ गलत कर रहा हूँ? – Jules

0

सारांश में मैं इस परियोजना पर एक mvn eclipse:eclipse और ग्रहण में प्रोजेक्ट के लिए F5 ताज़ा किया था और इस जावा अनुपालन सही ढंग से स्थापित करने के लिए कॉन्फ़िगर किया गया।

मेरा सेट-अप निम्नानुसार है। केप्लर का उपयोग करना जावा 1.7 ग्रहण में वरीयताओं में डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है (जैसा कि पहले से उल्लेख किया गया है, किसी भी तरह से pom.xml में जो कुछ भी मिलता है उसे सम्मान में अनदेखा किया जाता है)। मैंने ग्रहण परियोजनाओं का एक गुच्छा ग्रहण में आयात किया। सभी जावा अनुपालन स्तर 1.4 के रूप में दिखाए गए हैं और यहां तक ​​कि परियोजनाओं के निर्माण पथ को जावा 1.4 रनटाइम सूचीबद्ध करता है। मैंने डबल चेक किया 1.7 सही ढंग से पोम में निर्दिष्ट है।सेटिंग की पुष्टि करने के कमांड लाइन पर प्रभावी पोम अनुरोध द्वारा एक्सएमएल वर्तमान और पोम में सही है:

mvn help:effective-pom -Doutput=eff.xml 

यह पता चला है सही सेटिंग उपस्थित थे:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <fork>true</fork> 
    </configuration> 
</plugin> 

समस्या अनुमान के साथ है एम 2 ई प्लगइन का आयात हिस्सा, ग्रहण में दिखाया गया संस्करण है: 1.4.0.20130601-0317