跨多个SBT项目共享模块时,对象不是程序包错误的成员

时间:2018-02-14 01:44:50

标签: scala sbt

我有一个sbt模块,fooObject包中定义了io.myapp.foo。也就是说,可以通过io.myapp.foo.fooObject

访问该对象

然后我通过sbt publishLocal

将其发布到我当地的Ivy存储库

在另一个Sbt项目中,我包含了这个 foo对象模块

然后我尝试在包fooObject中的另一个类中使用io.myapp.bar.barObject。即使我的IDE可以访问io.myapp.foo.fooObject,因为我获得了自动完成功能而且我没有收到语法错误,但是当我尝试编译时出现错误:

Error:(19, 46) object foo is not a member of package io.myapp val schemaContent: String = fooObject.someValue

当它只是包名中的路径时,不确定为什么foo被称为对象。

我不知道为什么我收到此编译错误。有什么想法吗?

编辑:如果我进行SBT编译,它会编译,但是当我运行测试时,我得到了所说的编译错误。这使得它更奇怪

Edit2:似乎这是Intellij绊倒自己的一个案例。当我从sbt运行测试时,所有传球。只有当我从Intellij

运行测试时才会出现编译错误

1 个答案:

答案 0 :(得分:1)

好吧,这最终导致太多事情同时出错...这让我更难弄清楚为什么我会出现这种意想不到的行为......

所以我有一个先前版本的模块已经发布到我的本地常春藤,然后我添加了要共享的对象并尝试再次发布,但失败了,我没注意提到发布不是的日志成功,因为它无法覆盖现有的已发布工件。

另外在编译错误发生的另一个项目中,我从控制台运行编译,没有重新加载依赖项。

因此确保在重新发布之前删除并确保重新加载依赖项解决了我的问题。

希望这有助于其他人。

修改 当我从Intellij运行测试时,我仍然遇到了编译错误。所以我不得不再次重新导入项目..来自File -> project structure -> module -> (delete and then readd)之后,我现在可以从intellij运行测试了。

同时谈论多个不工作/出错的事情!混乱的完美配方!