私はすでにMavenプロジェクトとJava 9モジュールシステムの統合を実践しています。正常に動作しているようですが、Java 9より前にコンパイルされたmavenモジュールの下位互換性が気になりました。Java 9モジュールシステムがMavenに統合されると、自動モジュールの処理方法
JPMS(Java Platform Module System)にはAutomatic Module Conceptがあります。 JPMSでは、module-info.javaのないJarファイルはAutomatic Moduleとみなされ、他のJavaモジュールはファイル名をモジュール名として使用してこのjarファイルを使用することができます。
mavenプロジェクトとの統合の場合、JPMSの下位互換性に対する追加のサポートが必要だと思います。 最初に、基本的なjarファイルとmavenのjarファイルは同じ構造ではありません。 第二に、mavenのjarファイルの命名規則がJPMSモジュールの命名規則との互換性があるため、規則と互換性がありません。以下の例を参照してください。上記の例で
<artifactId>previous-version-module</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
、我々はすでに、以前のバージョンモジュール-0.0.1-SNAPSHOTを使用し、新しいJava 9 Mavenプロジェクトでは、このモジュールを使用します。
module new.module{
requires previous-version-module-0.0.1-SNAPSHOT
}
ですが、コンパイルエラーまたはIDEAツールスローエラーが発生します。
私はJava 9の前にコンパイルされたmaven jarファイルをJava 9とmaven統合プロジェクトで使用する方法を知りました。 モジュール定義ルールやMavenプラグインを追加検索しましたが、解決策が見つかりません。
ありがとうございました。
Mavenでどのように統合したのですか?自動モジュールを使用しないようにすることをお勧めします...もっとよくmodule-info.javaファイルを追加し、モジュールの名前を正しく指定してください.... module-info.javaでの使用方法には、バージョンは含まれていません....さらに、 「maven jarファイルは同じ構造ではない」という意味ですか?代わりにjmodファイルについて話していますか? – khmarbaise
"maven jarファイルは同じ構造ではありません"とは、jarファイル(mavenでコンパイル)にMETA-INFOディレクトリが含まれていることを意味します。依存関係のために。 –