나는 세 가지 모듈 core
, utils
및 test-utils
Java9 멀티 모듈 메이븐 프로젝트 테스트 종속성
코어와 멀티 모듈 메이븐 프로젝트는 내가 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.java
의 core
에 :
module my.project.core {
requires my.project.utils;
requires my.project.testutils; //test dependency
}
다음
컴파일 시간에 나는 my.project.testutils
모듈이 단지 테스트 종속성으로 가져온 것 아마 때문에 (찾을 수 없다는 오류가 발생).
Java 9 모듈러 환경에서 테스트 종속성은 어떻게 작동합니까? 명백한 이유는 필자의 주 코드가 테스트 종속성을 끌어내는 것을 원하지 않기 때문이다. 내가 놓친 게 있니?
저는 Maven이 아니며 Surefire 플러그인을 사용하지 않았지만 두 모듈이있는'module-info.java'는 틀린 방향입니다. 일반적으로 Java 9에서는 모듈을 '패치'함으로써 테스트가 용이합니다 (Maven과 Gradle은이를 추상화하는 경향이 있습니다). 또 다른 메모에서이 문서를 본 적이 있다면 명확하지 않습니다 : toolchains? - http://maven.apache.org/surefire/maven-surefire-plugin/java9.html –
이것은 Surefire 플러그인이나'test' 스코프를 사용하지 않기 때문에 (답변으로 쓰지는 않을 것입니다), 그러나 이것이 도움이 될 경우 Maven을 사용하는 작은 Java9 예제가 있습니다. https://github.com/codetojoy/WarO_Java_9_Maven –
@MichaelEaster 패치 모듈의 일부분은 올바르지 만 툴체인 부분은 질문과 관련이없는 것처럼 보입니다. – nullpointer