মাভেনের জন্য নির্দিষ্ট জাভা সংস্করণটি কীভাবে সেট করবেন


162

আমার মেশিনে আমার দুটি জাভা সংস্করণ ইনস্টল করা আছে: (1.6 এবং 1.7 নিজে নিজে ইনস্টল করেছেন)। বিভিন্ন প্রকল্পের জন্য আমার দু'জনেরই দরকার। তবে মাভেনের জন্য আমার 1.7 দরকার, এখন আমার মাভেন 1,6 জাভা সংস্করণ ব্যবহার করে, আমি কীভাবে মাভেনকে 1.7 ব্যবহার করতে পারি?


আমি জাভা 1.7 জাভা 1.7 সহ রফতানি করতে পারি না কারণ আমি আমার মেশিনের কনফিগারেশন টাচ করতে পারি না, জাভার ডিফল্ট সংস্করণটি অবশ্যই 1.6 হতে হবে।
প্যাট

মাভেন জাভাহোম ব্যবহার করে যাতে আপনি যা করতে চান তা জাভাআহোম মান পরিবর্তন না করেই ভাববেন না।
Zyga

1
আপনি কি আইডিই বা কমান্ড লাইন ব্যবহার করছেন? আপনি কি * নিক্স বা উইন্ডোতে আছেন?
xwker

1
এই উত্তরটি কি আপনি চান তা কভার করে? stackoverflow.com/a/4724062/1570834
DB5

হ্যাঁ দরকারী, তবে আমি প্রকল্পের পমতে চিংস তৈরি করতে পারি না, তবুও জিনিসগুলি একই এবং উত্তর সঠিক
প্যাট করুন

উত্তর:


138

ম্যাভেন JAVA_HOMEকোন জাভা সংস্করণটি চালানোর কথা তা খুঁজে পেতে প্যারামিটারটি ব্যবহার করে । আমি আপনার মন্তব্য থেকে দেখতে পাচ্ছি যে আপনি এটি কনফিগারেশনে পরিবর্তন করতে পারবেন না।

  • আপনি JAVA_HOMEম্যাভেন শুরু করার ঠিক আগে প্যারামিটার সেট করতে পারেন (এবং পরে প্রয়োজনে এটি পরিবর্তন করুন)।
  • আপনি নিজের mvn(উইন্ডোজবিহীন) / mvn.bat/ mvn.cmd(উইন্ডোজ) এ গিয়ে নিজের জাভা সংস্করণটি সেখানে স্পষ্টভাবে সেট করতে পারেন।

29
@ ওপ্যাট: তাই? আপনি JAVA_HOMEআপনার মেশিনের কনফিগারেশনটি কোনও পরিবর্তন না করেই আপনার স্থানীয় শেলটিতে সেট করতে পারেন (আপনি যে শেলটি বন্ধ করার সাথে সাথেই পরিবর্তনটি চলে যাবে)। আপনি এটি একটি একক কমান্ডের জন্যও পরিবর্তন করতে পারেন:JAVA_HOME=/path/to/jdk17/ mvn build
জোচিম সৌর

@ জোয়াচিমসৌয়ার: হ্যাঁ, তবে আমি এমভিএন.বাটকেও একটি উল্লেখ করেছি, যা উইন্ডোজ নির্দিষ্ট।
ড্যানিয়েলবারিয়ান

ম্যাকের সাহায্যে আপনি জাভাবাহোম ভিতরে ভিতরে একটি। Mavenrc ফাইল তৈরি করতে পারেন
রোনান কুইলভেরি

পুরাতন, তবে আমার 2 সেকেন্ডে ছোঁড়াচ্ছে। আমি একটি জাভা 8 পরিষেবাতে কাজ করছি যা একটি জাভা 7 অ্যাপ্লিকেশন দ্বারা ডাকে। নির্মাণের সময় অবিচ্ছিন্নভাবে স্যুইচ করা এড়াতে, আমি (উইন্ডোতে) একটি এমভিএন_জেএভিএহোম হোম এনভায়রনমেন্ট ভেরিয়েবল তৈরি করেছিলাম এবং তারপরে জাভাহোহোমের প্রতিটি উপস্থিতি এমভিএন_জেএভিএহোমকে এমভিএন এবং এমভিএন সিএমডি এর সাথে প্রতিস্থাপন করব।
রায়ানলুটজেন

74

POM এ, আপনি সংকলক বৈশিষ্ট্যগুলি সেট করতে পারেন, উদাহরণস্বরূপ 1.8 এর জন্য:

<project>
...
 <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
...
</project>

9
সংকলক-প্লাগইন সংস্করণ ৩..0.০ হিসাবে, উত্স এবং টার্গেটের জন্য ডিফল্ট মানগুলি যদি অনির্ধারিত বামে হয় 1.5
মুকুট

58

একাধিক জাভা ইনস্টল থাকা লোকদের জন্য সমাধান যুক্ত করা

আমাদের কাছে একটি বিশাল কোডবেস রয়েছে, যার বেশিরভাগ জাভাতে। আমি যা নিয়ে কাজ করি তার বেশিরভাগটি জাভা 1.7 বা 1.8 তে লেখা হয়। যেহেতু JAVA_HOMEস্থিতিশীল, তাই .bashrcমাভেনকে বিভিন্ন মান সহকারে চালানোর জন্য আমি এলিয়াস তৈরি করেছি :

alias mvn5="JAVA_HOME=/usr/local/java5 && mvn"
alias mvn6="JAVA_HOME=/usr/local/java6 && mvn"
alias mvn7="JAVA_HOME=/usr/local/java7 && mvn"
alias mvn8="JAVA_HOME=/usr/local/java8 && mvn"

প্রকল্পের জেডিকে সংস্করণ নির্বিশেষে এটি আমার বিকাশ মেশিনের কমান্ড লাইন থেকে মাভেনকে চালিত করতে দেয়।


2
যতক্ষণ না আপনি বিভিন্ন প্রকল্পগুলির জন্য 2 এবং 3, যে ক্ষেত্রে আপনি ইতিমধ্যে আছে ম্যাভেন প্রয়োজন mvn2এবং mvn3সংজ্ঞায়িত করা হয় এবং নামকরণ একটু ভীতু পায় যখন জাভা সংস্করণ খেলার মধ্যে আসা ...: D:
Tomislav Nakic-Alfirevic

3
আপনি যদি ম্যাক ব্যবহার করছেন তবে আপনার জেডি কে জাভা_হোম কমান্ড নিয়ে আসে যাতে আপনি হার্ডকোডিং পথগুলি এড়াতে পারেন, যেমনalias mvn8 = "JAVA_HOME=`/usr/libexec/java_home -v 1.8` && mvn
ptkvsk

5
(উবুন্টু + বাশ) অন, আপনাকে &&আগে বাদ দিতে হবে mvn। এমভিএন জেভিএহোমের সাথে মানটি দেখতে পাচ্ছে না &&
ফ্যাবিয়েন

@ ফাবিয়েন জেনে ভাল; আমি জেডএসএইচ ব্যবহার করি এবং বাশ পার্থক্য সম্পর্কে জানতাম না
জোনাথন ল্যান্ড্রাম

47

উইন্ডোতে

আপনি যদি JAVA_HOMEসিস্টেম ভেরিয়েবলের ভিতরে আপনার ভেরিয়েবল পরিবর্তন করতে চান না ।

আপনার mvn.batফাইলটি সম্পাদনা করুন এবং এটির মতো একটি লাইন যুক্ত করুন

set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre

@REM ==== START VALIDATION ====@ জোনাথন উল্লেখ করার পরে এটি করা যেতে পারে

ম্যাকে (এবং লিনাক্স?)

আপনি যদি JAVA_HOMEনিজের ~/.bashrcবা আপনার ভেরিয়েবলটি পরিবর্তন করতে চান না~/.bash_profile

আপনি একটি ~/.mavenrcফাইল তৈরি করতে এবং জাভা_হোম সরঞ্জামটিJAVA_HOME ব্যবহার করে আপনার নতুন সংজ্ঞা দিতে পারেন

export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`

বৈধতা পরীক্ষা

নিম্নলিখিত কমান্ডগুলি কার্যকর করে আপনি যাচাই করতে পারেন যে সবকিছু ঠিকঠাক করছে। Jdk সংস্করণটি আলাদা হওয়া উচিত।

mvn -version

তারপর

java -version


আমি এটি JAVA_Home = C: সেট করতে সেট করেছি: Files প্রোগ্রাম ফাইল \ জাভা \ jdk1.7.0_45 বাদে জেআর সাবফোল্ডার।
ন্যানোসফট

32

আমার দুটি সেন্ট যুক্ত করা এবং স্পষ্টভাবে সমাধান সরবরাহ করা।

আমি আমার উইন্ডোজ মেশিনে দুটি জেডিকে ইনস্টল করেছি - JDK 1.5এবং JDK 1.6

আমার ডিফল্ট (এবং উইন্ডোজ সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলে JAVA_HOMEসেট করা ) সেট করা আছে JDK 1.5

যাইহোক, আমার একটি মাভেন প্রকল্প রয়েছে যা ব্যবহার করে আমার তৈরি করা প্রয়োজন (যেমন, জেবিহেভ টিউটোরিয়াল এর Etsy.com ) ব্যবহার করে JDK 1.6

এই দৃশ্যে আমার সমাধান (যা কাজ করেছিল!) @DanielBarbarianএটি সেট করার পরামর্শ অনুসারে mvn.bat

কিছু উইন্ডোর ব্যাচ ফাইলের সাথে পরিচিত না হওয়ার জন্য, আমি মূলত ইন (অর্থাত্ ) এর set JAVA_HOME=<path_to_other_jdk>পরে লাইনটি যুক্ত করেছি :@REM ==== START VALIDATION ====mvn.bat%MAVEN_HOME%\bin\mvn.bat

@REM ==== START VALIDATION ====
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\jre
if not "%JAVA_HOME%" == "" goto OkJHome

4
Maven 3.5 এ, mvn.batনামকরণ করা হয় mvn.cmd
সিকেএম

30

আমি সম্প্রতি, মাভেনের সাথে দীর্ঘ দীর্ঘ সাত বছর পরে, সরঞ্জামচেন.এক্সএমএল সম্পর্কে শিখেছি। ম্যাভেন এর এটি নথিভুক্তও করেছে এবং এটি ২.০.৯ থেকে সমর্থন করে - টুলচেন ডকুমেন্টেশন

সুতরাং আমি নিম্নলিখিত সামগ্রী সহ আমার। / .M2 / ফোল্ডারে একটি সরঞ্জামচেন.এক্সএমএল ফাইল যুক্ত করেছি:

<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
 <!-- JDK toolchains -->
 <toolchain>
   <type>jdk</type>
   <provides>
     <version>1.8</version>
     <vendor>sun</vendor>
   </provides>
   <configuration>
     <jdkHome>/opt/java8</jdkHome>
   </configuration>
 </toolchain>
 <toolchain>
   <type>jdk</type>
   <provides>
     <version>1.7</version>
     <vendor>sun</vendor>
   </provides>
   <configuration>
     <jdkHome>/opt/java7</jdkHome>
   </configuration>
 </toolchain>
</toolchains>

এটি আপনাকে জডি কে মাভেনের সাথে নির্বিশেষে প্রকল্পটি তৈরি করতে বিভিন্ন জেডিকে মভেন কী ব্যবহার করতে পারে তা নির্ধারণ করার অনুমতি দেয়। আইডিইতে প্রকল্পের স্তরে আপনি জেডিকে সংজ্ঞায়িত করার মতো বাছাই করুন।


2
সেরা উত্তর,! ধন্যবাদ। এটি স্পষ্ট পরিস্থিতি ব্যাখ্যা করে যেখানে আমরা মাভেন এবং প্রকল্পটি দুটি পৃথক দুটি জাভা রানটাইম / ফ্রেমওয়ার্ক সহ সংকলনের অধীনে চালাতে চাই।
সৌন্দরারাজন

5

সমস্যার একটি সহজ সমাধান -

জাভাআহোম = / ইউএসআর / লিব / জেভিএম / জাভা -6-সূর্য / এমভিএন পরিষ্কার ইনস্টল

ম্যাকে, এটি দেখতে এমন কিছু দেখাচ্ছে -

জাভাআহোম = / লাইব্রেরি / জাভা / জাভা ভার্চুয়ালম্যাচাইনস / জেডি কে 1.7.0_21.jdk / সামগ্রী / হোম / এমভিএন ক্লিন ইনস্টল

PS: একটি বিশেষ কেস যা আমি পেয়েছি তা হল উপরের প্রদত্ত কমান্ডটি 'ফিশ' শেলটিতে কাজ করে না। আমার কাছে বাশ শেলও ছিল এবং এটি সেখানে কাজ করে। ব্যাশ শেলটিতে স্যুইচ করতে কেবল কমান্ড 'বাশ' ব্যবহার করুন।


5

কনফিগার পারে বিভিন্ন JDK ব্যবহার উৎস সংকলন সঙ্গে maven-compiler-plugin

শুধু পাথ উল্লেখ javacমধ্যে <executable>ট্যাগ। জাভা 11 এর উদাহরণস্বরূপ:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>11</source>
        <target>11</target>
        <fork>true</fork>
        <executable>C:\Program Files\Java\jdk-11.0.1\bin\javac</executable> <!--PATH TO JAVAC -->
    </configuration>
</plugin>

4

আপনার প্রকল্পে এবং আপনার পরিবেশের ভেরিয়েবলগুলিতে কোনও প্রভাব এড়াতে আপনি উত্স এবং টার্গেট জাভা সংস্করণ উল্লেখ করে কেবলমাত্র প্রকল্পের পিওএম-তে ম্যাভেন কম্পাইলার প্লাগইনটি কনফিগার করতে পারেন you

  <plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
    ...
  </plugins>

4

আপনি মাভেনকে নীচের নির্দেশাবলী অনুসরণ করে যে কোনও জাভা সংস্করণ ব্যবহার করতে সেট করতে পারেন।

আপনার মেশিনের লিঙ্কে জেনভ ইনস্টল করুন

নিম্নলিখিত কমান্ড লাইনে কমান্ড জারি করে আপনার মেশিনে ইনস্টল করা জাভা সংস্করণগুলি পরীক্ষা করুন।

জেনভ সংস্করণ

আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে বৈশ্বিক জাভা সংস্করণ নির্দিষ্ট করতে পারেন।

jenv গ্লোবাল ওরাকল 64-1.6.0.39

কমান্ড লাইনে ডিরেক্টরিতে নিম্নলিখিত কমান্ডটি ব্যবহার করে যে কোনও ডিরেক্টরি (প্রকল্প) এর জন্য আপনি স্থানীয় জাভা সংস্করণ নির্দিষ্ট করতে পারেন।

জেনভ স্থানীয় oracle64-1.7.0.11

আপনার pom.xML এ সঠিক জাভা সংস্করণ যুক্ত করুন

আপনি যদি কমান্ড লাইনে মাভেন চালাচ্ছেন তবে নীচের কমান্ডটি ব্যবহার করে জেনভ মাভেন প্লাগইন ইনস্টল করুন

jenv সক্ষম-প্লাগইন maven

এখন আপনি আপনার যন্ত্রের যে কোনও জাভা সংস্করণটিকে কোনও প্রজেক্টে কোনও সমস্যা ছাড়াই কনফিগার করতে পারেন।


1
এই বিকল্পটি পছন্দ করুন জেনভ পাইথনের জন্য ভ্যুচুয়ালেনভের মতো
জেসি ঝুয়াং

4

ম্যাকসে, (ধরে নিচ্ছেন যে আপনার কাছে সঠিক সংস্করণ ইনস্টল করা আছে)

JAVA_HOME=`/usr/libexec/java_home -v 1.8` mvn clean install -DskipTests


4

পরিবেশের ভেরিয়েবলগুলি পরিবর্তন না করে, আপনি মাভেন কম্পাইলার প্লাগইন ব্যবহার করে প্রকল্প স্তরের ভিত্তিতে জাভা সংস্করণ পরিচালনা করতে পারেন।

পদ্ধতি 1

<properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

পদ্ধতি 2

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

2

উইন্ডোজগুলিতে, আমি মাভেন বিন ফোল্ডারের মতো বিভিন্ন জেডিকে সংস্করণগুলির জন্য একাধিক ব্যাচ ফাইলগুলি যুক্ত করেছি:

mvn11.cmd

@echo off
setlocal
set "JAVA_HOME=path\to\jdk11"
set "path=%JAVA_HOME%;%path%"
mvn %*

তারপরে আপনি mvn11নির্দিষ্ট জেডিকে মাভেন চালানোর জন্য ব্যবহার করতে পারেন ।


1

লিনাক্স / ইউনিক্সে, 'এমভিএন' শেল স্ক্রিপ্টের মধ্যে থাকা জাএভিএহোমটি সেটিংসে সেটি ওভাররাইড করা হয়

$HOME/.mavenrc

দয়া করে কোথায় লিনাক্সে JAVA_Home এবং MAVEN পাথ ভেরিয়েবল যুক্ত করবেন


1

আমি কেবল JAVA_HOMEকনসোলে সেট করে ম্যাকের সাফল্য পাইনি তবে আমি এই পদ্ধতির সাথে সফল হয়েছি

  • আপনার নিজের ডিরেক্টরি ডিরেক্টরিতে .mavenrc ফাইল তৈরি করুন (যাতে ফাইলটি পাথ হবে ~/.mavenrc
  • যে ফাইল পেস্ট export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)

0

এছাড়াও আপনি মভেনের দুটি সংস্করণ ইনস্টল করতে পারেন এবং সেগুলির একটি সম্পাদনা করে এখানে সম্পাদনা করতে পারেন :

mvn (অ-উইন্ডো) /mvn.bat/mvn.cmd (Windows)

আপনার জাভা পছন্দসই পথে আপনার% java_home% উপস্থিতি প্রতিস্থাপন। তারপরে কেবল সেই পরিবর্তিত পথ থেকে ম্যাভেনকে চালান

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.