我已将此代码添加到Build.scala。
lazy val root = Project("root", file(".")) dependsOn(jbcrypt)
lazy val jbcrypt = RootProject(uri("https://github.com/jeremyh/jBCrypt.git"))
但是sbt因错误而失败:
[error] (root/*:update) sbt.ResolveException: unresolved dependency: default#jbcrypt_2.11;0.1-SNAPSHOT: not found
如何告诉sbt它是Java而不是Scala?
如何引用特定分支或标记?
谢谢。
答案 0 :(得分:7)
只有在引用的项目是sbt项目时,才能从源构建项目。 sbt不知道所有不同的构建系统,那么如何知道如何构建非sbt项目呢?
可以通过sbt插件添加对其他构建系统的支持,但这可能需要做很多工作。
您引用的项目是一个简单的Maven项目,这意味着您可以轻松地从中创建一个sbt项目。只需分叉回购并创建一个build.sbt
,其中包含以下内容:
scalaVersion := "2.11.5"
projectDependencies += "junit" % "junit" % "3.8.1" % "test"
publishTo := {
val nexus = "https://oss.sonatype.org/"
if (isSnapshot.value) Some("snapshots" at nexus + "content/repositories/snapshots")
else Some("releases" at nexus + "service/local/staging/deploy/maven2")
}
这是启动和运行所需的最少代码。 sbt似乎要求指定一个发布repo,它似乎也需要一个显式的Scala版本。依赖关系已由链接的Maven项目指定。
当然,您知道需要将RootProject
的URI更改为指向fork的位置。
关于第二个问题:您可以通过将提交/标记/分支附加到URI来引用它,并使用#
符号分隔:
uri("git://github.com/your/repo#<commit-hash/tag/branch>")