2012-03-07 6 views
9

जब मैं अपनी pom.xml फ़ाइल में निम्नानुसार कुछ परिभाषित नहीं करता हूं, जहां मेरे सिस्टम पर यह मैवेन के लिए परिभाषित किया गया है, जिसमें जावा जेडीके का संकलन करते समय उपयोग किया जाता है (मेरे सिस्टम पर कई संस्करण स्थापित हैं, JAVA_HOME अंक उन्हें)?मैवेन कंपाइलर द्वारा निर्दिष्ट जेडीके संस्करण का उपयोग कहां किया जाना है?

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+0

मुझे अभी भी प्रस्तावित समाधानों के साथ कोई समस्या दिखाई दे रही है। जैसा कि, मेरे उपयोग के मामले में, मेरे पास जेडीके 1.8 स्थापित है और एक जीआईटी भंडार क्लोन है कि मैं (अच्छी तरह से महसूस करता हूं) मेवेन-कंपाइलर-प्लगइन सेटिंग्स को नहीं बदलना चाहिए। मैंने दोनों को 1.7 और 1.8 जेडीके के साथ कॉन्फ़िगर किया है। मैं प्रदान किए गए स्रोत को बदलने के बिना मेवेन को या दूसरे पर उपयोग करने के लिए कैसे सूचित कर सकता हूं? – jwilleke

उत्तर

9

Maven दस्तावेज़ कहते हैं

संकलक प्लगइन अपनी परियोजना के स्रोतों को संकलित करने के लिए किया जाता है। डिफ़ॉल्ट कंपाइलर जावा है और जावा स्रोतों को संकलित करने के लिए प्रयोग किया जाता है। यह भी ध्यान रखें कि वर्तमान में डिफ़ॉल्ट स्रोत सेटिंग 1.5 है और डिफ़ॉल्ट लक्ष्य सेटिंग 1.5 है, स्वतंत्र रूप से जेडीके के साथ आप मैवेन चलाते हैं। यदि आप इन डिफ़ॉल्ट को बदलना चाहते हैं, तो आपको जावा कंपाइलर के -source और -target को सेट करने में वर्णित स्रोत और लक्ष्य सेट करना चाहिए।

रेफरी: http://maven.apache.org/plugins/maven-compiler-plugin/index.html

Maven के Jira पर इस दिलचस्प धागा है Change default source level to 1.5


संपादित करें: Maven 3.0 के लिए
अद्यतन और बाद:

संकलक प्लगइन का उपयोग किया जाता है अपनी परियोजना के स्रोत संकलित करें। 3.0 के बाद से, डिफ़ॉल्ट कंपाइलर javax.tools.JavaCompiler (यदि आप जावा 1.6 का उपयोग कर रहे हैं) और जावा स्रोतों को संकलित करने के लिए उपयोग किया जाता है। यदि आप javac का उपयोग करके प्लगइन को मजबूर करना चाहते हैं, तो आपको प्लगइन विकल्प forceJavacCompilerUse को कॉन्फ़िगर करना होगा।

स्रोत: http://maven.apache.org/plugins/maven-compiler-plugin/index.html

धन्यवाद यह ओर इशारा करते हुए के लिए nachteil

+0

प्वाइंट के लिए, बहुत बहुत धन्यवाद। – rapt

+0

संस्करण 3.0 के बाद से यह सच नहीं है - नीचे मेरा उत्तर देखें। – nachteil

+0

@nachteil अद्यतन, धन्यवाद। – Nishant

1

आपको अपनी मेवेन सेटिंग.एक्सएमएल फ़ाइल में एक संपत्ति को परिभाषित करना होगा। संपत्ति आपका दूसरा जावैक पथ है। (डी: \ dev \ java \ ibm \ java1.6.0 \ bin \ javac) इस पोम फ़ाइल में maven-compiler-plugin के लिए इस प्रॉपर्टी का उपयोग करने के बाद।

setting.xml

<settings> 
    <profiles> 
     <profile> 
      <id>IBM_JAVA</id> 
      <properties> 
       <IBM_JAVA_1_6_JAVAC>D:\dev\java\ibm\java1.6.0\bin\javac</IBM_JAVA_1_6_JAVAC> 
      </properties> 
     </profile> 
    </profiles> 
    <activeProfiles>  
     <activeProfile>IBM_JAVA</activeProfile> 
    </activeProfiles> 
    </settings> 

pom.xml

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
      <fork>true</fork> 
      <executable>${IBM_JAVA_1_6_JAVAC}</executable> 
      <encoding>UTF-8</encoding> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 
5

बस गुणों का उपयोग

<properties> 
    <maven.compiler.target>1.7</maven.compiler.target> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.test.skip>true</maven.test.skip> 
</properties> 
3

Maven संकलक प्लगइन doucemntation से:

3.0 के बाद से, डिफ़ॉल्ट कंपाइलर javax.tools.JavaCompiler (यदि आप जावा 1.6 का उपयोग कर रहे हैं) और जावा स्रोतों को संकलित करने के लिए उपयोग किया जाता है। यदि आप javac का उपयोग करके प्लगइन को मजबूर करना चाहते हैं, तो आपको प्लगइन विकल्प forceJavacCompilerUse को कॉन्फ़िगर करना होगा।

मुझे यह पोस्ट खोज इंजन के माध्यम से मिला और मुझे लगता है कि यह अद्यतन करने लायक है। इसके अलावा: -target और -source विकल्प संकलक को स्वयं प्रभावित नहीं करते हैं, बल्कि जिस तरह से यह स्रोत कोड को संभालता है और आउटपुट बाइट कोड उत्पन्न करता है।

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

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