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定义,核心的内容如下所示:
module my.project.core { requires my.project.utils; }
但是我无法弄清楚如何让核心的测试类能够在测试执行期间看到test-utils类.当maven-surefire-plugin尝试测试运行时,我找不到类.
如果我添加一个需要my.project.testutils;到core的module-info.java:
module my.project.core { requires my.project.utils; requires my.project.testutils; //test dependency }
然后在编译时我得到一个错误,无法找到my.project.testutils模块(可能是因为它只是作为测试依赖项引入).
如何在Java 9模块化世界中使用测试依赖项?出于显而易见的原因,我不希望我的主代码引入测试依赖项.我错过了什么吗?
解决方法
通过类路径本身来处理测试依赖性.因此,您可以简单地删除testutils,并在执行测试时由maven进行修补.
module my.project.core { requires my.project.utils; }
请参阅slide 30 pertaining to maven-compiler-plugin.
我还建议你看一下Where should I put unit tests when migrating a Java 8 project to Jigsaw和this comment,Robert确认maven的实现如下.
编辑:创建了一个类似于主模块与核心相同的sample project,对guava的依赖与你的utils相同,junit依赖与testutils相同.
原文地址:https://www.jb51.cc/java/128621.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。