我正在尝试使用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... */)
这可能是基本的,但是我应该如何将其导入代码中?我可以在import myProjInGit.SampleObject.sampleFunction
中使用Main.scala
吗?我可以看到有关此主题的信息令人不安,因此我不确定自己不是在完全树错了树。预先感谢您的帮助。
编辑:此处有更多详细信息。我尝试导入的项目只是一个库,因此它仅包含一个package object
。为了尝试调试一些东西,我尝试将其作为ProjectRef
而不是RootProject
导入。我发现了projects
sbt命令,如果我在要导入的项目上运行它(不是主要的),它将给我:
sbt:SheetRef> projects
[info] In file:/data/va-projects/sheet-ref/
[info] * SheetRef
所以...似乎外部项目称为SheetRef。如果我尝试使用
导入SheetReflazy 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
感觉不直观。我可以将其作为root导入,但是随后我似乎无法从代码中访问它-如果它需要import语句,对我来说应该是什么并不明显。
答案 0 :(得分:2)
依赖关系必须是SBT项目,因此SBT知道如何构建它。如果是,那么是的,您就像访问代码中的任何其他依赖项一样访问它,因为它就像其他依赖项一样被添加到类路径中(在构建之后)。
感觉不直观。我可以将其作为root导入,但是随后我似乎无法从代码中访问它-如果它需要import语句,对我来说应该是什么并不明显。
问题是,添加依赖关系无关紧要;它可能是普通库依赖关系,非托管依赖关系,源依赖关系等。这些都是SBT概念,对Scala编译器没有意义。
因此import
语句不能依赖于项目名称,jar名称或类似名称。实际上,就像将这些文件放入自己的项目一样。
答案 1 :(得分:0)
有人使这种事情起作用吗?我正在尝试相同的方法,并且设法设法导入了git项目,但是我不知道如何访问导入的scala组件。