2011-01-18 20 views
34

मैं जावा एसई 1.6 मॉड्यूल बनाने के लिए सूर्य-जावा 6-जेडीके का उपयोग करने के लिए मेवेन 2 को कॉन्फ़िगर करना चाहता हूं, और जावा एसई 1.7 मॉड्यूल बनाने के लिए ओपनजेडके -7 का उपयोग करना चाहता हूं। क्या यह संभव है?विभिन्न जेडीएसई संस्करणों के लिए विभिन्न जेडीके का उपयोग करने के लिए मेवेन को कॉन्फ़िगर करें?

Maven2 को स्वचालित रूप से एक आदेश में विभिन्न मॉड्यूल बनाने के लिए सही जेडीके चुनना चाहिए।

उदाहरण के लिए, यह

$ mvn package 

बजाय

$ cd module1 
$ update-alternatives ... jdk6 ... 
$ mvn package 
... 
$ cd module2 
$ update-alternatives ... jdk7 ... 
$ mvn package 

पी.एस. होना चाहिए यह pom.xml फ़ाइलों के बारे में कुछ भी नहीं है, जो अलग-अलग मॉड्यूल के लिए <source>, <target> मानों के साथ maven-compiler-plugin सेटअप कर चुके हैं। अगर मैं openjdk-7 का उपयोग करना चुनता हूं, तो मैवेन 2 संस्करण 1.6 क्लास फाइलें उत्पन्न करेगा, लेकिन ओपनजेडके -7 का उपयोग करके सूरज-जावा 6-जेडीके का उपयोग करेगा। प्रश्न जावा एसई प्रोफाइल को कॉन्फ़िगर करने के बारे में है।

+6

एफवाईआई: जे 2 एसई 1.6 जैसी कोई चीज नहीं है। 1.6 से शुरू होने पर, इसे जावा एसई कहा जाता है (जैसे जे 2 ईई अब जावा ईई है)। [संदर्भ] (http://weblogs.java.net/blog/kgh/archive/2005/06/goodbye_j2se_he_1.html) –

उत्तर

83

हम स्पष्ट रूप से इस समस्या (वातावरण चर के रूप में परिभाषित JAVA_HOME_6 और JAVA_HOME_7 के साथ) संकलन प्लगइन का config में javac sepecify हल:

और के लिए जावा 6 मॉड्यूल

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <showDeprecation>true</showDeprecation> 
     <showWarnings>true</showWarnings> 
     <executable>${env.JAVA_HOME_6}/bin/javac</executable> 
     <fork>true</fork> 
    </configuration> 
</plugin> 

और जावा 7 मॉड्यूल के लिए

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <showDeprecation>true</showDeprecation> 
     <showWarnings>true</showWarnings> 
     <executable>${env.JAVA_HOME_7}/bin/javac</executable> 
     <fork>true</fork> 
    </configuration> 
</plugin> 
+0

धन्यवाद, आपने अविश्वसनीय तेज़ उत्तर दिया, मैं बस अपने प्रश्न को एक और कदम स्पष्ट करने वाला हूं, लेकिन आप पहले ही जवाब दे चुका है। :) –

+0

@ 谢 继 雷 'लेनिक अच्छी तरह से एक अपवित्र शायद उचित होगा –

+1

नोट: मेरे लिए ऐसा लगता है कि यदि जावाएएचओएमई सेट है तो यह इसका उपयोग करता है इससे कोई फर्क नहीं पड़ता कि अनुभाग लागू नहीं होता है। मुझे इसे हटा देना था और वास्तव में –

5

आप Compile Sources Using A Different JDK

को Maven-संकलक प्लगइन बता सकते हैं
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
    <executable><!-- path-to-javac --></executable> 
    </configuration> 
</plugin> 
1

@ lweller के जवाब पर कई upvotes से मुझे लगता है कि यह अजीब है, लेकिन 1.7source के रूप में और target Maven के साथ अभी भी जावा 1.5 का उपयोग कर संकलन करने की कोशिश की। बल्कि केवल 7 साथ ... की तरह तो:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>7</source> <!-- see here, says only 7, not 1.7 --> 
     <target>7</target> <!-- here as well --> 
     <showDeprecation>true</showDeprecation> 
     <showWarnings>true</showWarnings> 
     <executable>${env.JAVA_HOME_7}/bin/javac</executable> 
     <fork>true</fork> 
    </configuration> 
</plugin> 

Maven-संकलक प्लगइन संस्करण 2.5.1।

+2

7 पर [javac] (http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html) के बारे में दस्तावेज़ देखें 1.7 के लिए समानार्थी '-सोर्स' और '-targetarget' पैरामीटर के लिए https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html पर एक नज़र डालें – freedev

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

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