2017-11-06 1 views
6

나는 세 가지 모듈 core, utilstest-utilsJava9 멀티 모듈 메이븐 프로젝트 테스트 종속성

코어와 멀티 모듈 메이븐 프로젝트는 내가 module-info.java 자바 (9) 추가 한

<dependency> 
    <groupId>my.project</groupId> 
    <artifactId>utils</artifactId> 
</dependency> 
<dependency> 
    <groupId>my.project</groupId> 
    <artifactId>test-utils</artifactId> 
    <scope>test</scope> 
</dependency> 

다음 종속성 정의가있다 세 가지 모듈 모두에 대한 정의가 다음과 같습니다.

module my.project.core { 
    requires my.project.utils; 
} 

그러나 core의 테스트 클래스가 테스트 실행 중에 클래스 test-utils을 볼 수있게하는 방법을 알아낼 수 없습니다. maven-surefire-plugin 테스트 실행을 시도하면 클래스를 찾을 수 없습니다.

내가 추가 할 경우 requires my.project.testutils;module-info.javacore에 :

module my.project.core { 
    requires my.project.utils; 
    requires my.project.testutils; //test dependency 
} 
다음

컴파일 시간에 나는 my.project.testutils 모듈이 단지 테스트 종속성으로 가져온 것 아마 때문에 (찾을 수 없다는 오류가 발생).

Java 9 모듈러 환경에서 테스트 종속성은 어떻게 작동합니까? 명백한 이유는 필자의 주 코드가 테스트 종속성을 끌어내는 것을 원하지 않기 때문이다. 내가 놓친 게 있니?

+3

저는 Maven이 아니며 Surefire 플러그인을 사용하지 않았지만 두 모듈이있는'module-info.java'는 틀린 방향입니다. 일반적으로 Java 9에서는 모듈을 '패치'함으로써 테스트가 용이합니다 (Maven과 Gradle은이를 추상화하는 경향이 있습니다). 또 다른 메모에서이 문서를 본 적이 있다면 명확하지 않습니다 : toolchains? - http://maven.apache.org/surefire/maven-surefire-plugin/java9.html –

+1

이것은 Surefire 플러그인이나'test' 스코프를 사용하지 않기 때문에 (답변으로 쓰지는 않을 것입니다), 그러나 이것이 도움이 될 경우 Maven을 사용하는 작은 Java9 예제가 있습니다. https://github.com/codetojoy/WarO_Java_9_Maven –

+0

@MichaelEaster 패치 모듈의 일부분은 올바르지 만 툴체인 부분은 질문과 관련이없는 것처럼 보입니다. – nullpointer

답변

4

my.project.testutils이 테스트 범위 종속성 인 경우 maven 및 java9를 사용하면 명시 적으로 (requires) 모듈 설명자를 포함 할 필요가 없습니다.


테스트 종속성은 클래스 경로 자체를 통해주의를 기울여야합니다. 따라서 testutils을 제거하면 테스트를 실행하는 동안 maven이 패치합니다.

module my.project.core { 
    requires my.project.utils; 
} 

slide 30 pertaining to maven-compiler-plugin.

enter image description here

를 참조하십시오 나는 것 또한 당신이 다음 받는다는 구현에 확인 로버트에 의해 Where should I put unit tests when migrating a Java 8 project to Jigsawthis comment를 살펴 보시기 바랍니다.

편집하십시오 sample project 만든 주요 모듈은 같은 것을 비유를 그리기는 core, guava에 대한 종속성은 utils과 동일하고, junit 의존성은 testutils과 동일합니다.

관련 문제