SBT中的本地依赖在使用时无法编译。 SBT和Intellij看到了代码

时间:2016-02-06 22:46:50

标签: scala sbt

我正在跟进这个问题,因为它帮助我得到了我的#34;普通"项目得到认可,但我无法使用它。 How to reference external sbt project from another sbt project?

项目结构

/ src目录/服务/ API /项目

  • build.sbt包含所有依赖项,以及dependsOn(commonlib)

/ SRC / commonlib /项目

  • build.sbt非常简单,只是基本定义。

SBT加载一切正常,当我点击对象时,我试图使用它在intellij中打开并导入commonlib.conversions.SomeConversion被识别(通过Intellij并可点击到我的本地副本)。

api - sbt

lay val project = Project( id = "company", file("."), settings)
.enablePlugins(JettyPlugin)
.dependsOn(commonlib)

lazy val commonlib = RootProject(file("../../commonlib"))

commonlib也是一个带有/ src / commonlib / src / main / scala / commonlib的SBT项目

在主要项目中我导入

import commonlib.conversions.SomeConversion
...
val converted = SomeConversion.convert(x)

我收到一条错误说明:     找不到:object commonlib

commonlib.conversions的顶部看起来像

package commonlib.conversions

非常感谢任何帮助。我可能完全走错了道路并且很可能用git subrepos来解决这个问题,但我希望在多个项目中分享这个,因此(略微)组成了名称。并最终更好地了解import / sbt系统。我不希望这是一个远程jar,因为我将编辑api包。

谢谢!

1 个答案:

答案 0 :(得分:1)

从@marios那里得到建议我使用了sbt docs,我正在努力,但他的建议和github链接迫使我进一步挖掘。

最终,commonlib项目在api项目中定义,如:

lazy val coreLib = RootProject(file("../../commonlib"))

在build.sbt的api项目定义结束时,我附上了

.dependsOn(coreLib)

这几乎就是我上面的内容和调整或两个,加上清理我的Intellij缓存非常有帮助。