Есть ли способ установить источник для зависимости sbt? - PullRequest
1 голос
/ 21 июня 2019

по какой-то причине я не могу получить доступ к некоторой зависимости sbt напрямую, что вызывает ошибку (часть).

[warn]            +- default:example-build:0.1.0-SNAPSHOT (scalaVersion=2.12, sbtVersion=1.0)
[error] sbt.librarymanagement.ResolveException: unresolved dependency: com.typesafe.sbteclipse#sbteclipse-plugin;5.2.4: Resolution failed several times for dependency: com.typesafe.sbteclipse#sbteclipse-plugin;5.2.4 {compile=[default(compile)]}:: 
[error]         typesafe-ivy-releases: unable to get resource for com.typesafe.sbteclipse#sbteclipse-plugin;5.2.4: res=https://repo.typesafe.com/typesafe/ivy-releases/com.typesafe.sbteclipse/sbteclipse-plugin/scala_2.12/sbt_1.0/5.2.4/ivys/ivy.xml: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

есть ли конфигурация для источника для зависимости sbt, такая как maven?

<mirror>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

или как я могу использовать maven для управления зависимостями для sbt?

configuration

1 Ответ

0 голосов
/ 21 июня 2019

Неизменяемые исходные зависимости:

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

Надеюсь, это поможет.Пожалуйста, дайте мне знать, если он не отвечает на ваш вопрос или у вас есть дальнейшие комментарии.Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...