2017-05-05 6 views
3

私の現在の仕事は、特定のJavaプロジェクトをJava(JRE)バージョン6からバージョン9に確実に実行することです.Mavenでこれを行う方法はありますか?Maven:クロスJavaバージョンの互換性を確保する

私はmaven-compilter-pluginを設定するのがその一部だと思います。

<source>1.6</source> 

これ以上のバージョンの機能を使用しないようにするにはどうすればよいですか?そして、<target>はどうですか?

Mavenを実行するJavaバージョンは? Java 9?

animal-sniffer-maven-pluginも面白そうですが、ここにどのように適合するかはわかりません。 Java 6は実際には最小のAPIではないため、AFAIKにはJava 9にはないクラスがいくつかあります(たとえばsunやcom.sunパッケージからのもの)。

他に何がありますか?誰もこれを既に済ませていますか?

+0

参照:http://stackoverflow.com/questions/36583118/is-maven-ready-for-jdk9 – ZhekaKozlov

+3

'com.sun'パッケージはAPIの一部ではありません。アプリケーションによって使用されるべきではありません。 –

+0

これは私のアプリケーションではありません。私はプロジェクトでこれらのcom.sunクラスを使用しなかった、他の誰かが何年も前にした。私はおそらくそれらを見つけて置き換えるものです。 – mbee

答えて

3

これについてはいくつかの注意事項(そうでないかもしれない、本当に答え):

まず、あなたのコードは唯一の最も低いJDK 6(API)からのコードを使用している場合は動物スニファ-mavenの-プラグインプラグインを確認することができますチェックしなければならない部分(または他のJDKバージョン)。 さらに、JDK 6ベースのコードを超えるバイトコードを必要としないjarファイルに依存するプロジェクトがあるかどうかを確認する必要があります。

<target>/<source>はこのようなことを保証しません。彼らは結果として得られるjarファイル(クラスファイル形式)が少なくともJRE 6で動作することを確かめますが、JRE 9でも動作することを確認しません。

JRE 9で実行する必要がある場合は、プロジェクトのmodule-info.javaファイル。

さらにプロジェクトでは、com.sun.*を使用しています。私が過半数を覚えている限り、またはそれらのすべてが廃止予定のものとして宣言されていますか、またはcom.sun.*のみが内部APIであり、非常に長い間、これらのクラスが存在しないMacでJDKを実行します(here参照)。

あなたは私たちが確認するためにanimal-sniffer-maven-pluginなどを使用してあります。..(私たちはこれをテストするためにJDK 9 EAパッケージを使用している)...私たちはMavenのもJRE 9上で実行されていることを確認する必要がありMaven Core原因を見てみることができますこれは機能します。

関連する問題