私はMaven、そしてMacOSも初めてです。
私は自分の端末にセットアップメイヴンを持っていて、バージョン設定を取得するとき(mvn -v
を使って)、JDK 1.7がインストールされているのにJDK 1.6が使われているようです。どうかしましたか?
私が入力するコマンドはこれらです:
blues:helloworld Ninja$ Java -version
Java version "1.7.0_05" Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)`
blues:helloworld Ninja$ mvn -v
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32+0800) Maven home: /usr/local/Cellar/maven/3.1.0/libexec Java version: 1.6.0_51, vendor: Apple Inc. Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Default locale: zh_CN, platform encoding: EUC_CN OS name: "mac os x", version: "10.8.4", Arch: "x86_64", family: "mac"
次を~/.mavenrc
に追加してください。
export Java_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home
echo export "Java_HOME=\$(/usr/libexec/Java_home)" >> ~/.bash_profile
入る
/System/Library/Frameworks/JavaVM.framework/Versions
そしてCurrentJDK
シンボリックリンクを指すように更新します。
/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/
例えば。
cd /System/Library/Frameworks/JavaVM.framework/Versions
Sudo rm CurrentJDK
Sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK
今すぐそれが動作します。
またできます、
<properties>
...
<!-- maven-compiler-plugin , aka Java Compiler 1.7 -->
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
...
</properties>
どのJavaバージョン用にコンパイルするかをmavenに明示的に指示することもできます。あなたのpomにmaven-compiler-plugin
を追加してみることができます。
<project>
[...]
<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>
</plugins>
[...]
</build>
[...]
</project>
MavenプロジェクトをIDEにインポートした場合は、おそらく、あなたのMavenランナーが使用しているデフォルトコンパイラ用のMaven設定がIDEにあります。
それは私を助けました。 pom.xmlに追加するだけです。
デフォルトでは、MavenコンパイラプラグインはJava 1.5または1.6を使用します、あなたはあなたのpom.xmlでそれを再定義しなければなりません。
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
Eclipseユーザーのために。たとえば、クリーンパッケージを実行する実行設定がある場合。
「実行構成」パネルには、どのランタイムに対して実行するかを指定できる「JRE」タブがあります。この設定は、pom.xmlの内容をすべてオーバーライドすることに注意してください。
私はこの質問に遅れていますが、私はMacOSでJDKのバージョンを処理するための最良の方法は、で説明されているスクリプトを使用することであると思います。 http://www.jayway.com/2014/01/15/how-to -switch-jdk-version-on-mac-os-x-maverick /
互換性を確認してください。私は何時間もmvn 3.2.1
とjdk 1.6.0_37
に苦労しました。すべての変数は設定されていましたが機能していませんでした。最後に私はjdk to 1.8.0_60
とmvn 3.3.3
をアップグレードしました、そしてそれはうまくいきました。以下のような環境変数
Java_HOME=C:\ProgramFiles\Java\jdk1.8.0_60
MVN_HOME=C:\ProgramFiles\Apache-maven\Apache-maven-3.3.3
M2=%MVN_HOME%\bin extend system level Path- ;%M2%;%Java_HOME%\bin;
@MasterGauravのソリューションは完璧に機能しています、
私は通常、Javaスイッチのことをzsh関数に入れます。
alias Java_ls='/usr/libexec/Java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'
function Java_use() {
export Java_HOME=$(/usr/libexec/Java_home -v $1)
echo export "Java_HOME=$(/usr/libexec/Java_home -v $1)" > ~/.mavenrc
export PATH=$Java_HOME/bin:$PATH
Java -version
}
その後、Java_ls
を実行してマシン上で利用可能なすべてのjvmを取得し、Java_use 1.7
を実行してJavaとmavenの両方に1.7バージョンを使用できます。