2013-08-08 7 views
7

के रूप में जेडीके 7 की आवश्यकता है मेरे पास मेरे सिस्टम (लिनक्स,/ऑप्ट निर्देशिका के तहत) पर जेडीके 1.6 और 1.7 दोनों स्थापित हैं। मैंने अपने पथ में जेडीके 1.6 के लिए बिन निर्देशिका जोड़ा है, इसलिए डिफ़ॉल्ट रूप से जावा का संस्करण उपयोग किया जाता है।मैं डिफ़ॉल्ट रूप से जेडीके 6 का उपयोग करने के लिए मेवेन को कैसे कॉन्फ़िगर कर सकता हूं, लेकिन

मैं ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसके लिए जेडीके 1.7 और कुछ की आवश्यकता है जो 1.6 की आवश्यकता है। पहले मैंने ग्रहण के भीतर जेडीके 1.7 सेटिंग्स सेट की थीं, लेकिन मैं इस परियोजना को मेवेन में परिवर्तित करना चाहता था ताकि हर कोई अपने पसंदीदा संपादक का उपयोग कर सके।

क्या मैवेन इंस्टॉलेशन/कॉन्फ़िगरेशन (और पीओएम फ़ाइल में नहीं) पर 1.7 स्थान निर्दिष्ट करना संभव है जैसे कि यह डिफ़ॉल्ट रूप से 1.6 का उपयोग करता है और 1.7 परियोजना को निर्दिष्ट करते समय इसे पीओएम में आवश्यक होता है? जहां तक ​​मुझे पता है, प्रोजेक्ट पर काम करने वाले प्रत्येक व्यक्ति को अपनी पीओएम फाइलों में एक ही सामग्री होनी चाहिए, इसलिए मैं यहां जावा 7 निर्देशिका का स्थान सेट करने में अनिच्छुक हूं (क्योंकि यह हर किसी की मशीनों पर अलग होगा)।

$ mvn --version 
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 13:51:28+0000) 
Maven home: /opt/apache-maven-3.0.5 
Java version: 1.6.0_45, vendor: Sun Microsystems Inc. 
Java home: /opt/jdk1.6.0_45/jre 
Default locale: en_GB, platform encoding: UTF-8 
OS name: "linux", version: "3.8.0-27-generic", arch: "amd64", family: "unix" 

निम्नलिखित जोड़ना:

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.6</version> 
      <configuration> 
       <outputDirectory>${project.build.outputDirectory}/resources</outputDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

परिणामों में:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project golemlite: Fatal error compiling: invalid target release: 1.7 -> [Help 1] 

उत्तर

4

एक नज़र here लो। आप अपनी सेटिंग्स.एक्सएमएल में एक संपत्ति सेट कर सकते हैं और इसे पोम में इस्तेमाल कर सकते हैं। ध्यान रखें कि सभी को उस संपत्ति को परिभाषित करना होगा।

अपने उदाहरण के लिए के रूप में:

<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <fork>true</fork> 
     <executable>${JAVA_1_7_HOME}/bin/javac</executable> 
    </configuration> 
    </plugin> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
     <configuration> 
      <outputDirectory>${project.build.outputDirectory}/resources</outputDirectory> 
     </configuration> 
    </plugin> 
</plugins> 
</build> 

और सेटिंग्स में:

<settings> 
    [...] 
    <profiles> 
    [...] 
    <profile> 
     <id>compiler</id> 
     <properties> 
      <JAVA_1_7_HOME>/path/to/jdk7</JAVA_1_7_HOME> 
     </properties> 
    </profile> 
    </profiles> 
    [...] 
    <activeProfiles> 
    <activeProfile>compiler</activeProfile> 
    </activeProfiles> 
</settings> 
+0

यह जाने का रास्ता दिखता है ; संभवतः 'सेटिंग्स.एक्सएमएल' को वीसीएस से बाहर रखा जाना चाहिए (एक अलग डाउनलोड के रूप में सेट)? – ataulm

+0

इसे निश्चित रूप से वीसीएस से बाहर रखा जाना चाहिए क्योंकि इसमें विशिष्ट स्थानीय सेटिंग्स हो सकती हैं। यदि आप आसानी से कुछ चूक को तेज करना चाहते हैं तो आप टेम्पलेट में जांच सकते हैं लेकिन प्रत्येक उपयोगकर्ता को इसे अपनी आवश्यकताओं के अनुरूप अनुकूलित करना होगा। –

+1

आह, यहां तक ​​कि एक पर्यावरण चर सेट करना पर्याप्त है - एक सेटिंग फ़ाइल से बचने के लिए (लेकिन प्रत्येक डेवलपर को उस चर को सेट करने की आवश्यकता है) – ataulm

1

आप अपने pom.xml पास mvn.sh नाम की एक फ़ाइल जगह कर सकते हैं, जिसमें आप कुछ भी आप चाहते हैं JAVA_HOME निर्धारित किया है। फिर, ./mvn clean install जैसे प्रोजेक्ट बनाएं। और सुनिश्चित करें कि इसे वीसीएस में न जांचें।

1

मैवेन आपके JAVA_HOME सिस्टम चर में जो भी संस्करण है उसका उपयोग करता है। इसलिए मैं अपने वर्तमान खोल में उनके बीच स्वैप करने के लिए अपने .bash_profile फ़ंक्शंस में जोड़ना चाहता हूं, इसलिए आप डिफ़ॉल्ट रूप से जावा 6 छोड़ सकते हैं, लेकिन जब आप एक नई परियोजना बनाने की आवश्यकता होती है तो आप अपने आप को जावा 7 या 8 तक स्विच करने की अनुमति देते हैं।

Gist to Change Java Versions on Demand

अपने टर्मिनल तो पार्टी की योजना बनाई नहीं है, तो आप इस समाधान बदलाव करने पड़ सकता है।

व्यक्तिगत रूप से मैं इसे अपनी सेटिंग्स.एक्सएमएल में सेट करने के लिए पसंद करता हूं, भले ही यह थोड़ा और काम हो, क्योंकि यह आपको सभी निर्माण उपकरणों में एक ही समाधान का उपयोग करने और जावा के अन्य संस्करणों को लक्षित करने वाले जार चलाने के लिए भी अनुमति देता है।

तो के लिए आप (स्पष्ट रूप से जहां कभी जावा संस्करण आपकी मशीन पर स्थापित कर रहे हैं करने के लिए उचित रूप से रास्तों में सुधार करने) अपने .bash_profile को कुछ इस तरह जोड़ने हो सकता है एक समाधान:

function java6 
{ 
    JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0_65-b14-462.jdk/Contents/Home 
    export JAVA_HOME 
} 

function java7 
{ 
    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home 
    export JAVA_HOME 
} 
संबंधित मुद्दे

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