2017-11-02 34 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

로버트 솔티이 주제에 쓰기 업을 여기에있다 찾을 수 있습니다 :은 https ://www.sitepoint.com/maven-cannot-generate-module-declaration/ –

+1

그런데'require com.google.guava'는'com.google.common이 필요합니다 '라고 써야합니다. – ZhekaKozlov

+1

가능한 [Can Maven이 모듈 선언을 생성 할 수 있습니다] (https://stackoverflow.com/questions/43201997/can-maven-generate-the-module-declaration) – ZhekaKozlov

답변

6

는 답변을 질문, 정확하게 m의 이름 문제가되는 module-info의 odules은 com.google.guava과 같이 말하면 모듈 이름이라고합니다. 일반적으로 앱용 Java 8이있는 항아리가있는 경우 위의 maven 구성을 사용하는 yourApp.jar을 예로 들어 보겠습니다. 당신의 사용을 만들 수있는 jdeps tool으로 : -

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

당신이 더 자바 9.

현재 해당 플러그인에서 동일한 프로젝트를 마이그레이션하는 동안의 사용을 만들 수 있습니다 단지에 대한 module-info.java을 생성 할 것이다 maven-jdeps-plugin이라는 이름은이 작업을 지원하지 않는 것 같습니다. 그래도 여전히 Work in Progress이고 Maven 작업 과정에서 소유자가 효과적으로 볼 수 있다면 이 들어 있습니다.

편집:: 그냥 경우에 당신은이 기능이 그렇게 할 수 있도록이 github의의의 repo https://github.com/moditect/moditect에서 플러그인이 있습니다 MJDEPS tracker.

3

에 요청 할 수있는 작업에 유용하게 찾을 수 있습니다. 당신의 예에서

에서, 받는다는 빌드에 다음을 넣어 :

<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