为什么IntelliJ Idea不能从另一个Kotlin模块中找到Maven依赖关系?

想象一下,我有两个使用Kotlin代码的基于Maven的项目, prjA和prjB 。

prjA中的测试类SomeTest引用了prjB中定义的类和函数 :

 class SomeTest { @Test fun prjACanReferencePrjBStuff() { val valRes = ValidationResult() val correctValRes = createCorrectValidationResult() } } 

当我

  1. 在prjB中运行mvn clean install
  2. 在IntelliJ Idea和更新prjA的依赖关系
  3. 在prjA中运行mvn clean install

我得到错误 – Maven找不到在prjB定义的类:

在IntelliJ的想法错误

为什么? 我该如何解决?

笔记:

  1. Kotlin类默认是公开可见的。 在mvn install prjB期间,我没有得到任何错误。
  2. Maven仓库包含prjB工件和IntelliJ Idea引用正确的Maven仓库。
  3. 当我尝试从命令行构建prjA ,构建成功。
  4. 使IntelliJ Idea缓存无效并重建项目无济于事。

更新1:我需要一个解决方案,它允许我不仅在测试中使用prjB

更新2:如果我用Java中的prjB重写Kotlin类,那么一切都很好。

如果您需要prjB的常规类,请将主依赖添加到prjA。 如果您需要prjB的测试类,请将测试依赖关系添加到prjA。

要将主依赖添加到另一个模块:

 <project> ... <dependencies> <dependency> <groupId>com.your.group</groupId> <artifactId>prjB</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> ... </project> 

要将测试依赖关系添加到另一个模块:

 <project> ... <dependencies> <dependency> <groupId>com.your.group</groupId> <artifactId>prjB</artifactId> <version>1.0-SNAPSHOT</version> <type>test-jar</type> <scope>test</scope> </dependency> </dependencies> ... </project> 

这里是一个测试依赖的例子。