我有一个多模块Maven项目,有模块“app”和“域”。应用依赖于域。域模块有公共和私有代码。公共代码在包**/域/api/**
中。
在Domain模块的pom中,我添加了maven jar插件的执行,该插件使用分类器“api”(仅包含公共类)生成一个额外的项目工件。
在应用程序模块中,我在域模块上添加了一个“运行时”范围的依赖项(因此所有类都存在于运行时),并在分类的“API”上添加了编译时范围的依赖。这是为了确保应用程序模块仅从域访问公共api代码。
一切都编译和运行。我已经从域模块中检查了api工件的内容,它只包含要公开的代码。
但在IntelliJ中,我仍然能够使用(导入)私有包中的域代码。IntelliJ似乎忽略了分类器部分。因此,当我引用私有代码(这是错误的IMHO)而Maven构建失败(这是好的)时,IntelliJ会编译。
这是智能问题还是我漏掉了什么?
de App模块中的相关pom部分:
<dependency>
<groupId>com.acme</groupId>
<artifactId>sbp-domain</artifactId>
<version>${project.version}</version>
<classifier>api</classifier>
</dependency>
<dependency>
<groupId>com.acme</groupId>
<artifactId>sbp-domain</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
Intellij在复杂的maven依赖项方面遇到了问题。尤其是当您尝试过滤原始项目时。
我在<code>test jar</code>(简单方法)中遇到了相同的问题,因为Intellij忽略了排除。IDEA-204719跟踪进度。
khmrbase在评论中是正确的。您应该为 API 创建一个单独的项目。这种方法的唯一缺点是,您必须复制(或进一步使您的模块复杂化)api实现共享测试代码。解决方案可能是测试罐
,正如我所解释的那样,它在Intellij中无法正常工作。
我有一个多模块maven项目,包含三个模块、和 Core具有以下依赖项定义 我已经为所有三个模块添加了Java9定义,的如下所示: 但是,我不知道如何让的测试类能够在测试执行期间看到类。当尝试测试运行时,找不到类。 如果向的添加需要My.Project.TestUtils;的: 然后在编译时,我得到一个错误,即找不到模块(大概是因为它只是作为测试依赖项引入的)。 在Java9模块化的世界中,如何处
在使用Gradle插件和的多模块项目中,正确的Gradle配置是什么样子的? 我有以下项目设置: 模块包含公共项目配置。 模块是一个我希望使用spring-boot-dependencies bom中指定的版本号导入依赖项的模块,但结果是一个标准JAR。 模块是一个依赖于的模块,其结果是一个可执行的spring boot jar文件(包括所有依赖项)。因此,该项目既需要也需要插件。 为了保持Gra
我有一个多模块Maven项目,其中包含子模块ModuleA和ModuleB等。ModuleA将ModuleB列为依赖项。但是,当仅构建模块A时,Maven不会解决模块B的依赖关系-导致。我想避免构建整个父级以使构建更快。目前我发现让它工作的唯一方法是使用exec插件和脚本,将父项目称为“ModuleB, ModuleA”,这意味着我必须在每次依赖项更改时更改脚本(例如添加ModuleC)。 是否有
我有一个关于Maven依赖解析机制如何在多模块项目中工作的问题。 通常,我只在构建多模块项目时使用“mvn clean install”,我的假设是,如果项目中的任何模块需要以前的模块,依赖关系将通过访问本地存储库并加载相应的“jar”来解决。 由于项目内部原因,我必须使用“mvn清洁编译”,这个命令自然不会创建任何“jar”,而“install”不存在。所以在这里我开始想知道,多模块项目的依赖项
我在项目中有两个模块(和)运行集成测试。我希望在测试之前,我的应用程序将使用liquibase启动和滚动迁移,但由于我通过集成测试模块运行应用程序,liquibase正在寻找一个关于该模块的主文件,该文件导致了错误。因为主文件位于miom应用程序()的模块中
我一直试图模仿我的服务/业务类来开始测试我的应用程序,但有许多对其他类的“依赖”,主要是存储库和传递给这些存储库的存根。为了能够对我的服务进行单元测试,我一直试图设置它,但我不断地得到错误,我真的不知道我的设置是否正确: 我没有包括接口,因为我觉得没有必要,但如果需要,可以。 但正如您所看到的,我需要传递2个模拟存储库,它们自己是从一个模拟的“存根”实例化的,这就是我的问题。 我尝试过许多不同的方