首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java9多模块Maven项目测试依赖关系

Java9多模块Maven项目测试依赖关系
EN

Stack Overflow用户
提问于 2017-11-06 21:54:17
回答 1查看 1.7K关注 0票数 9

我有一个包含三个模块( coreutilstest-utils )的多模块maven项目。

Core具有以下依赖项定义

代码语言:javascript
复制
<dependency>
   <groupId>my.project</groupId>
   <artifactId>utils</artifactId>
</dependency>
<dependency>
   <groupId>my.project</groupId>
   <artifactId>test-utils</artifactId>
   <scope>test</scope>
</dependency>

我为所有三个模块添加了Java9 module-info.java定义,core的如下所示:

代码语言:javascript
复制
module my.project.core {
   requires my.project.utils;
}

然而,我不知道如何让core的测试类能够在测试执行期间看到test-utils类,当maven-surefire-plugin尝试测试运行时,我得到了未找到的类。

如果我将requires my.project.testutils;添加到coremodule-info.java

代码语言:javascript
复制
module my.project.core {
   requires my.project.utils;
   requires my.project.testutils; //test dependency
}

然后,在编译时,我得到一个无法找到my.project.testutils模块的错误(大概是因为它只是作为测试依赖项引入的)。

在Java 9模块化世界中,如何处理测试依赖关系?显然,我不希望我的主代码引入测试依赖项。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-11-07 01:31:33

对于maven和java9,如果您的my.project.testutils是测试范围依赖项,则不需要在模块描述符中显式地包含(requires)它。

通过类路径本身来处理测试依赖关系。因此,您可以简单地删除testutils,它将在执行测试时由maven修补。

代码语言:javascript
复制
module my.project.core {
   requires my.project.utils;
}

请参阅幻灯片30有关maven编译器-插件。

我还建议您看看罗伯特的将Java 8项目迁移到Jigsaw时,我应该将单元测试放在哪里?这句话,确认一下maven所遵循的实现。

编辑:创建了一个样本工程,它绘制了一个类推式:主模块与core相同,guava上的依赖与utils相同,junit依赖与testutils相同。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47146491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档