为什么IntelliJ Idea没有从另一个Kotlin模块中找到Maven依赖项?

时间:2016-06-01 05:00:05

标签: java maven intellij-idea kotlin

想象一下,我有两个基于Maven的项目,包含Kotlin代码,prjAprjB

prjA中的测试班SomeTest引用prjB中定义的classfunction

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

当我

  1. prjB中运行mvn clean install
  2. 在IntelliJ Idea和
  3. 中更新prjA的依赖关系
  4. prjA中运行mvn clean install
  5. 我收到错误 - Maven找不到prjB中定义的类:

    Error in IntelliJ Idea

    为什么呢?我该如何解决?

    备注:

    1. Kotlin类默认为publicly visiblemvn install prjB期间我没有收到任何错误。
    2. Maven存储库包含prjB个工件,IntelliJ Idea引用了正确的Maven存储库。
    3. 当我尝试从命令行构建prjA时,构建成功。
    4. 使IntelliJ Idea缓存无效并重建项目无济于事。
    5. 更新1:我需要一个解决方案,这样我就不仅可以在测试中使用prjB

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

1 个答案:

答案 0 :(得分:1)

如果您需要来自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>

Here是关于测试依赖的示例。