我有一个多模块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>
我已经为所有三个模块添加了Java9module-info.Java
定义,core
的如下所示:
module my.project.core {
requires my.project.utils;
}
但是,我不知道如何让core
的测试类能够在测试执行期间看到test-utils
类。当maven-surefire-plugin
尝试测试运行时,找不到类。
如果向核心
的模块-info.java
添加需要My.Project.TestUtils;的模块-info.java
:
module my.project.core {
requires my.project.utils;
requires my.project.testutils; //test dependency
}
然后在编译时,我得到一个错误,即找不到my.project.testUtils
模块(大概是因为它只是作为测试依赖项引入的)。
在Java9模块化的世界中,如何处理测试依赖关系?原因很明显,我不希望我的主代码引入测试依赖项。我是不是漏掉了什么?
使用maven和java9,如果您的my.project.testUtils
是一个测试范围依赖项,则不需要在模块描述符中显式包含(requires
)它。
测试依赖关系是通过类路径本身来处理的。因此您只需删除testutils
,它就会在执行测试时由maven修补。
module my.project.core {
requires my.project.utils;
}
请参阅有关maven-compiler-plugin的幻灯片30。
编辑:创建了一个示例项目,该项目绘制了一个类比,即主模块与您的core
相同,对guava
的依赖项与您的utils
相同,而junit
依赖项与您的testutils
相同。
我正在使用STS 2.9.1(构建在Eclipse 3.7.2上)和与STS(V1.0.200.20111228-1245)绑定的m2e插件。 我有一个问题是包含多个模块的Eclipse项目中缺少依赖项,或者我不完全理解它应该如何工作。 这是一个maven项目。 在我的项目>Properties>Java Build Path>Libraries中,我有“maven dependencies”库,
我有一个关于Maven依赖解析机制如何在多模块项目中工作的问题。 通常,我只在构建多模块项目时使用“mvn clean install”,我的假设是,如果项目中的任何模块需要以前的模块,依赖关系将通过访问本地存储库并加载相应的“jar”来解决。 由于项目内部原因,我必须使用“mvn清洁编译”,这个命令自然不会创建任何“jar”,而“install”不存在。所以在这里我开始想知道,多模块项目的依赖项
问题:Maven在我的测试中找不到一些依赖项 在我的pom中是这样导入的。xml: 我已经试过了: mvn测试编译 使Intellij缓存无效 重启Intellij 清除. m2并重建项目
请找到下面所有的3个POM。
我有一个多模块Maven项目,有模块“app”和“域”。应用依赖于域。域模块有公共和私有代码。公共代码在包中。 在Domain模块的pom中,我添加了maven jar插件的执行,该插件使用分类器“api”(仅包含公共类)生成一个额外的项目工件。 在应用程序模块中,我在域模块上添加了一个“运行时”范围的依赖项(因此所有类都存在于运行时),并在分类的“API”上添加了编译时范围的依赖。这是为了确保应
我有一个多模块maven项目。请在父POM下方找到。 儿童POM如下所示。 我已经在parent中声明了从slf4j进行日志记录,但在eclipse中没有生成相同的maven依赖项,因此我无法在代码中使用日志记录。谁能告诉我这里出了什么问题吗。