Scala 如何将非托管依赖项导入到代码中

Scala 如何将非托管依赖项导入到代码中,scala,sbt,Scala,Sbt,我试图使用sbt来删除现有的github项目,然后(显然)在代码中使用它。我的缩写build.sbt如下所示: lazy val myProjInGit = RootProject( uri("git://github.com/me/sheet-ref.git#master")) lazy val root = (project in file(".")) .dependsOn(myProjInGit) .settings( name := "MainProj", )

我试图使用sbt来删除现有的github项目,然后(显然)在代码中使用它。我的缩写
build.sbt
如下所示:

lazy val myProjInGit = RootProject(
  uri("git://github.com/me/sheet-ref.git#master"))

lazy val root = (project in file("."))
  .dependsOn(myProjInGit)
  .settings(
    name := "MainProj",
  )

libraryDependencies ++= Seq( /*other stuff... */)
这可能是一个基本的问题,但我应该如何将其导入到代码中呢?比如说,我可以在我的
Main.scala
中使用
导入myProjInGit.SampleObject.sampleFunction
?我可以看到一个令人不安的缺乏关于这个话题的信息,所以我不确定我不是完全错了。提前感谢您的帮助

编辑:这里有更多的细节。我试图导入的项目只是一个库,因此它只包含一个
包对象
。为了稍微调试一下,我尝试将其作为
ProjectRef
导入,而不是
RootProject
。我发现了
projects
sbt命令,如果我在试图导入的项目(不是主项目)上运行它,它会提供:

sbt:SheetRef> projects
[info] In file:/data/va-projects/sheet-ref/
[info]   * SheetRef
所以。。。外部项目似乎被称为SheetRef。如果我尝试使用导入SheetRef

lazy val sheetRef = ProjectRef(
  uri("git://github.com/me/sheet-ref.git#master"), "SheetRef")
然后我得到一个sbt错误:

[error] No project 'SheetRef' in 'git://github.com/me/sheet-r
ef.git#master'.
[error] Valid project IDs: root

这感觉很不直观。我可以将它作为根目录导入,但是我似乎无法从代码中访问它-如果它需要一个import语句,我不清楚它应该是什么。

依赖项必须是一个SBT项目,所以SBT知道如何构建它。如果是,那么是的,您可以像代码中的任何其他依赖项一样访问它,因为它与任何其他依赖项一样被添加到类路径中(在构建之后)

这感觉很不直观。我可以将它作为根目录导入,但是我似乎无法从代码中访问它——如果它需要一个import语句,我不清楚它应该是什么

问题是,如何添加依赖项并不重要;它可以是一个普通的库依赖项、非托管依赖项、源依赖项等。这些都是SBT概念,对Scala编译器没有任何意义


因此,
import
语句不能依赖于项目名称、jar名称或类似的内容。事实上,这与您将这些文件放入自己的项目中是一样的。

是否有人让这样的事情起作用?我也在尝试同样的方法,并设法导入git项目,但我不知道如何访问导入的scala组件。

谢谢-只是为了更清楚一点(可能),它需要与其包名一起导入-因此在我的例子中,包名为sheetref,这意味着导入sheetref.sheetrefbj,这也适用于你自己的项目代码(除非你在导入的同一个包中)。我对答案进行了一些扩展,以解决你的编辑问题,希望它能有所帮助。是的,我做了。在我的例子中,外部包的名称是“sheetref”-因此我在外部包本身的.scala文件的顶部有“package sheetref”-然后我只在我的主包中使用import sheetref.sheetrefbj.\在我的主包中,sheetrefbj是sheetref包中的主要对象。让我知道,如果不清楚或如果它不工作,我会张贴一个适当详细的回答下面。感谢回复人,我一直在听的想法,告诉我它无法解决导入。不过它还是管用的!谢谢。