我有一个多模块的Maven项目,包含三个模块core
、utils
和test-utils
Core
模块具有以下依赖项定义
<dependency>
<groupId>my.project</groupId>
<artifactId>utils</artifactId>
</dependency>
<dependency>
<groupId>my.project</groupId>
<artifactId>test-utils</artifactId>
<scope>test</scope>
</dependency>
我已经为三个模块添加了Java 9的module-info.java
定义,其中core
的定义如下:
module my.project.core {
requires my.project.utils;
}
然而,我无法弄清楚如何让“core”的测试类在测试执行期间能够看到“test-utils”类。当“maven-surefire-plugin”尝试运行测试时,我会收到找不到类的错误。
如果我在“core”的“module-info.java”中添加“requires my.project.testutils;”:
module my.project.core {
requires my.project.utils;
requires my.project.testutils; //test dependency
}
然后在编译时,我会收到一个错误,指出找不到my.project.testutils
模块(可能是因为它只作为测试依赖项引入)。
在Java 9模块化的世界中,如何处理测试依赖项?由于明显的原因,我不希望我的主要代码拉取测试依赖项。我有什么遗漏吗?
test
范围(所以我不会将其编写为答案),但是如果这有帮助的话,这里有一个使用Maven的小Java9示例 - https://github.com/codetojoy/WarO_Java_9_Maven - Michael Easter