为什么IntelliJ Idea不能从另一个Kotlin模块中找到Maven依赖关系?
想象一下,我有两个使用Kotlin代码的基于Maven的项目, prjA和prjB 。
prjA中的测试类SomeTest引用了prjB中定义的类和函数 :
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类默认是公开可见的。 在
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>
这里是一个测试依赖的例子。
- 编译Kotlin到JavaScript
- IDEA IllegalStateException:使用Kotlin运行JUnit测试时,服务正在死亡
- 插件错误:Kotlin抛出未捕获的IllegalStateException
- 用Intellij 15开发webapp?
- kotlin未解决的KDoc链接,但IntelliJ不喜欢导入修复它
- Intellij个人构建存储在Git中的Kotlin DSL Teamcity作业定义的更改
- Kotlin / IntelliJ – 编译器找不到正确的参数类型的函数
- IntelliJ中的两个JVM Kotlin“创建项目”选项有什么不同?
- 如何从Intellij IDEA的“新建”上下文菜单中删除文件类型子菜单