想象一下,我有两个带有Kotlin代码的基于Maven的项目,prjA和prjB。prjA
中的测试类SomeTest引用了prjB
中定义的class和function:
class SomeTest {
@Test
fun prjACanReferencePrjBStuff() {
val valRes = ValidationResult()
val correctValRes = createCorrectValidationResult()
}
}
当我
在prjB中运行
mvn clean install
,更新IntelliJ Idea中
prjA
的依赖项并在prjA中运行
mvn clean install
,我收到错误-Maven找不到
prjB
中定义的类:为什么?我该如何解决?
笔记:
Kotlin类默认为publicly visible。在
mvn install
的prjB
期间没有任何错误。Maven存储库包含
prjB
工件,并且IntelliJ Idea引用了正确的Maven存储库。当我尝试从命令行构建
prjA
时,构建成功。使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>
Here是有关测试依赖项的示例。