Неизменяемые исходные зависимости:
lazy val scoptJVMRef = ProjectRef(uri("git://github.com/scopt/scopt.git#c744bc48393e21092795059aa925fe50729fe62b"), "scoptJVM")
ThisBuild / organization := "com.example"
ThisBuild / scalaVersion := "2.12.2"
lazy val root = (project in file("."))
.dependsOn(scoptJVMRef)
.settings(
name := "Hello world"
)
Когда вы запускаете sbt и запускаете компиляцию, sbt автоматически клонирует scopt / scopt в промежуточный каталог и связывает сборки вместе.
Это такжеозначает, что ваши версии sbt должны быть совместимы, а также вы можете получить нежелательные подключаемые модули.
Другое ограничение заключается в том, что промежуточный каталог не обновляется после первоначального клона.
Что явместо этого хотелось бы, чтобы это была гибридная зависимость, которую я мог бы подключить к нескольким репозиториям, кодировать и тестировать одновременно;но для публикации используйте двоичный файл Maven в качестве зависимости.
addSbtPlugin("com.eed3si9n" % "sbt-sriracha" % "0.1.0")
Тогда теперь вы можете написать:
lazy val scoptJVMRef = ProjectRef(workspaceDirectory / "scopt", "scoptJVM")
lazy val scoptJVMLib = "com.github.scopt" %% "scopt" % "3.7.0"
lazy val root = (project in file("."))
.sourceDependency(scoptJVMRef, scoptJVMLib)
.settings(
name := "Hello world"
)
Вы можете проверить это, установив параметр libraryDependency:
$ sbt
sbt:helloworld> libraryDependencies
[info] * org.scala-lang:scala-library:2.12.6
[info] * com.github.scopt:scopt:3.7.0
Надеюсь, это поможет.Пожалуйста, дайте мне знать, если он не отвечает на ваш вопрос или у вас есть дальнейшие комментарии.Удачи.