IntelliJ:如何使用从本地源导入的模块覆盖SBT中的依赖项?

时间:2017-01-25 00:18:31

标签: java intellij-idea playframework-2.0 sbt

我有2个项目,项目A和项目B.项目A是一个Play2应用程序,依赖于项目B(它是一个客户端库。)目前,项目B是通过SBT从我们的工件中提取的。我想设置IntelliJ,以便从我的计算机上的项目源中提取项目B,而不是从中指定的工件中提取。

我已将项目B添加为项目A的模块,并将模块B添加到模块A的依赖项中。然后,我将命令模块B放在依赖项列表的最顶层。代码的静态分析似乎工作正常,当我更新Project A的代码以使用我在Project B中更新的新方法签名时,没有显示编译错误。但是,当我运行Play App时,我得到了编译错误说明方法签名不正确。

有没有办法覆盖运行时用于SBT和Play App的模块?

1 个答案:

答案 0 :(得分:2)

你可以通过sbt来做到这一点。在build.sbt中,例如:

val localDep = ProjectRef(file("/Users/me/projects/b"), "b")

dependsOn(localDep)

IntelliJ会将此依赖项作为模块导入。但是,您应该删除库依赖项,以避免冲突类路径。

当然,这使得项目难以共享,除非其他开发人员将项目放在同一位置。在这种情况下,我会创建一个multi-project build,这通常是紧密耦合的项目与个别结果工件的最佳选择。

另一个选择是git项目依赖:

val projectDep = ProjectRef(uri("git://github.com/me/b"),"b")