2017-11-02 31 views
2

Java9は、OSGIやMaven Dependencyに似た強力なモジュール性を導入しました。maven依存関係からJava 9依存関係を構築する方法

maven依存関係を検査するJava 9依存関係を構築できるmavenプラグインはありますか?例えば

、私はこの記事を読んだことがあるが、それはそれほど有用ではありません

module my-module{ 
    requires com.google.guava; 
    exports com.mycompany.app; 
} 

<groupId>com.mycompany.app</groupId> 
<artifactId>my-module</artifactId> 
.... 
<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>23.3-jre</version> 
</dependency> 

から- How to express dependency in maven on java ee features for transition to Java 9?

+2

ロバートScholteはここにこのトピックの書き込みアップを持っているかもしれませんします。https:/ /www.sitepoint.com/maven-cannot-generate-module-declaration/ –

+1

ちなみに、 'require com.google.guava'は' com.google.commonが必要です 'でなければなりません。 – ZhekaKozlov

+1

[Mavenがモジュール宣言を生成できる]の複製があります。(https://stackoverflow.com/questions/43201997/can-maven-generate-the-module-declaration) – ZhekaKozlov

答えて

6

答えるために質問、正確には、mの名前問題に参照されるmodule-infoのodulesは、com.google.guavaのように、自動と呼ばれます。一般的に、アプリケーション用のJava 8を使用したjarファイルがすでにある場合は、上記のmaven設定のyourApp.jarとしましょう。あなたはさらに、現在、対応するプラグインが下のJava 9に

を同じプロジェクトの移行中に利用することができ、あなたのjarファイルのためのmodule-info.javaを生成する

jdeps --generate-module-info <output-dir> /path/to/yourApp.jar 

- :あなたはjdeps toolとしての利用をすることができますmaven-jdeps-pluginという名前はこの作業をサポートしていないようです。まだWork in Progressですが、これはMavenワークフローで導入される所有者によって有効と見なされる場合にはになる可能性があります。

編集::は、念のためにあなたは機能がそれをすることができ、このGitHubのレポhttps://github.com/moditect/moditect中のプラグインがありMJDEPS tracker.

3

で要求することができるタスク役立ちます。あなたの例では

、Mavenのビルドに次のように置く:

<plugin> 
    <groupId>org.moditect</groupId> 
    <artifactId>moditect-maven-plugin</artifactId> 
    <version>1.0.0.Alpha2</version> 
    <executions> 
    <execution> 
     <id>add-module-infos</id> 
     <phase>package</phase> 
     <goals> 
     <goal>add-module-info</goal> 
     </goals> 
     <configuration> 
     <module> 
      <moduleInfo> 
      <name>com.mycompany.app.my.module</name> 
      </moduleInfo> 
     </module> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

target/moditectの下で生成されたmodule-info.java

+0

リンクは正常です。しかし、あなたはあなたの答えをより良くするためにいくつかの詳細を投稿することができます –

+0

いくつかの詳細と答えを改善 – tomdw