построить проект sbt через артефактное репо: ошибка загрузки: Caught java.net.ConnectException: соединение отклонено

На узле сборки у меня есть sbt

sbt script version: 1.4.6

У меня есть проект scala с зависимостями в project/plugins.sbt

addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.7.4")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0")
addSbtPlugin("com.github.tototoshi" % "sbt-slick-codegen" % "1.4.0")
addSbtPlugin("org.openapitools" % "sbt-openapi-generator" % "5.0.0-beta2")
libraryDependencies += "org.postgresql" % "postgresql" % "42.2.9"

в проекте/сборке.свойства

sbt.version=1.4.6

в Artifactory создайте 2 удаленных репо

http://rep.local:80/artifactory/mavenCentral через https://repo1.maven.org/maven2/ с типом макета Maven maven2-default

и

SBT-scala-sbt.org-плагины через https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/ с макетом типа SBT sbt-default

build.sbt

name := "some_app"
version := "1.0.0"
scalaVersion := "2.13.3"

resolvers += ("Artifactory" at "http://rep.local/artifactory/libs-release-local").withAllowInsecureProtocol(true)
resolvers += ("maven-central" at "http://rep.local:80/artifactory/mavenCentral").withAllowInsecureProtocol(true)
resolvers += ("ivy" at "http://rep.local/SBT-scala-sbt.org-plugins").withAllowInsecureProtocol(true)

enablePlugins(BuildInfoPlugin)
enablePlugins(JavaAppPackaging)
enablePlugins(DockerPlugin)
enablePlugins(CodegenPlugin)

addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1")

scalacOptions ++= Seq(
  "-P:bm4:no-filtering:y",
  "-P:bm4:no-map-id:y",
  "-P:bm4:no-tupling:y"
)

buildInfoOptions += BuildInfoOption.BuildTime

Docker / packageName := "new/some_app"
dockerBaseImage := "openjdk:13"
dockerExposedPorts ++= Seq(8080, 8080)
dockerRepository := Some("docker.rep.local")
dockerUpdateLatest := true

libraryDependencies ++= Dependencies.all

lazy val root = (project in file(".")).settings(
  SlickCodeGen.settings: _*
)

javaOptions ++= {
  val props = sys.props.toList
  props.filter { case (key, _) => key.startsWith("http") } map {
    case (key, value) => s"-D$key=$value"
  }
}
javacOptions += "-Dfile.encoding=UTF-8"
javaOptions in run += "-Dconfig.resource=application.dev.conf"
javaOptions in reStart += "-Dconfig.resource=application.dev.conf"

fork := true
trapExit := false
connectInput := true

попробуйте построить на узле сборки и вернули ошибку

[error] sbt.librarymanagement.ResolveException: Error downloading org.openapitools:sbt-openapi-generator;sbtVersion=1.0;scalaVersion=2.12:5.0.0-beta2

[error]   download error: Caught java.net.ConnectException: Connection refused (Connection refused) (Connection refused (Connection refused)) while downloading https://repo1.maven.org/maven2/org/openapitools/sbt-openapi-generator_2.12_1.0/5.0.0-beta2/sbt-openapi-generator-5.0.0-beta2.pom
[error]   download error: Caught java.net.ConnectException: Connection refused (Connection refused) (Connection refused (Connection refused)) while downloading https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.openapitools/sbt-openapi-generator/scala_2.12/sbt_1.0/5.0.0-beta2/ivys/ivy.xml
[error]   download error: Caught java.net.ConnectException: Connection refused (Connection refused) (Connection refused (Connection refused)) while downloading https://repo.typesafe.com/typesafe/ivy-releases/org.openapitools/sbt-openapi-generator/scala_2.12/sbt_1.0/5.0.0-beta2/ivys/ivy.xml

Попробуйте найти https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.openapitools/sbt-openapi-generator/scala_2.12/sbt_1.0/5.0.0-beta2/ivys/ivy.xml через локальное хранилище http://rep.local/SBT-scala-sbt.org-plugins

http://rep.local/artifactory/SBT-scala-sbt.org-plugins/org.openapitools/sbt-openapi-generator/scala_2.12/sbt_1.0/5.0.0-beta2/ivys/

введите здесь описание изображения

Существовать!

$ sbt docker:publish 

продолжают возвращать ошибку... Как решить эту проблему?


person Nikolay Baranenko    schedule 04.02.2021    source источник
comment
если выключен addSbtPlugin(org.openapitools % sbt-openapi-generator % 5.0.0-beta2) — сборка без проблем, после добавления этого SBT Pliggin возвращается ошибка   -  person Nikolay Baranenko    schedule 04.02.2021


Ответы (1)


Если вы не можете получить доступ к Maven Central, простое добавление resolver не сработает.

Что вам нужно, так это полностью переопределить преобразователи, используя repositories файл и -Dsbt.override.build.repos=true. Документацию см. в разделе Proxy Repositories.

хранилища

[repositories]
  local
  libs-release-local: http://rep.local/artifactory/libs-release-local,allowInsecureProtocol
  proxy-central: http://rep.local:80/artifactory/mavenCentral,allowInsecureProtocol
  proxy-ivy: http://rep.local/SBT-scala-sbt.org-plugins,[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext],allowInsecureProtocol

Резолверы, которые должен поддерживать ваш прокси-репозиторий

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

  maven-central
  sbt-plugin-releases: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/, [organisation]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)([branch]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

Обратите внимание, что repo.scala-sbt.org будет перенаправлять на Bintray, но то, куда он будет перенаправляться, может быть изменено. Фактически, Bintray вообще будет закрыт 1 мая 2021 года.

person Eugene Yokota    schedule 13.02.2021
comment
внесите изменения, попробуйте собрать - сборщик не может найти com.typesafe.sbt/sbt-native-packager/1.7.4/ivys/ivy.xml, проверил в нашем репо отсутствие этого пакета, может быть вы знаете общедоступное репо с этим пакетом? - person Nikolay Baranenko; 14.02.2021
comment
@NikolayBaranenko Я добавляю раздел об этом. - person Eugene Yokota; 15.02.2021