Путь неразрешенных зависимостей SBT — Проект Scala Intellij

#scala #apache-spark #sbt #intellij-plugin

Вопрос:

У меня недавно установлена и создана среда разработки spark, scala, SBT в intellij, но когда я пытаюсь скомпилировать SBT, возникает ошибка неразрешенных зависимостей.

ниже приведен мой файл SBT

 name := "xxxxxxxxxxxxxxxxxxxx"
version := "0.1"
scalaVersion := "2.11.8"

val sparkVersion = "2.3.1"
val jacksonCore = "2.6.7"
val publishMavenStyle = true


resolvers   = Seq(
  "Artifactory" at "https://binrepo.xxxxxx.com/artifactory/xyz/",
  "Artifactory Common" at "https://binrepo.xxxxxx.com/artifactory/data-engineering-gscl-abc/",
  //"ArtifactorySnapShots" at "https://binrepo.xxxxxx.com/artifactory/xyz/SNAPSHOTS/"
  ("Spark Packages Repo" at "http://dl.bintray.com/spark-packages/maven").withAllowInsecureProtocol(true)
)

libraryDependencies   = Seq(


  "org.scalamock" %% "scalamock" % "4.4.0" % Test,

  //dependency of xyz-core.
  "com.tgt.dsc.xyz.datapipeline" % "xyz-core_2.11" % "1.8.1",

  //dependency of fields performance specific  common function
  "abc-common" % "abc-common_2.11" % "3.0.0",

  //dependency of reading configuration
  "com.typesafe" % "config" % "1.3.3",

  //spark core libraries, in the production or for spark-submit in local add provided so that dependent jar is not part of assembly jar
  // ex :"org.apache.spark" %% "spark-core" % sparkVersion % provided,
  "org.apache.spark" %% "spark-core" % sparkVersion  % Provided ,
  "org.apache.spark" %% "spark-sql" % sparkVersion  % Provided ,
  "org.apache.spark" %% "spark-hive" % sparkVersion % Provided ,
  "org.scala-lang" % "scala-library" % scalaVersion.value,

  //logging library
  "org.slf4j" % "slf4j-api" % "1.7.29",

  //for doing testing
  "org.scalatest" %% "scalatest" % "3.1.0" % Test,
  "MrPowers" % "spark-fast-tests" % "0.20.0-s_2.11",
  "mrpowers" % "spark-daria" % "0.35.0-s_2.11"
)

enablePlugins(GitVersioning)
assemblyJarName in assembly := s"${name.value}_${scalaVersion.value}-${version.value}.jar"
assemblyMergeStrategy in assembly := {
  //case "META-INF/services/org.apache.spark.sql.sources.DataSourceRegister" => MergeStrategy.concat
  case PathList("META-INF", xs@_*) => MergeStrategy.discard
  case x => MergeStrategy.first
}

//get the token from secrets
val token = sys.env.getOrElse("SONAR_TOKEN", "")

//configurations for sonar integration
sonarProperties   = Map(
  "sonar.host.url" -> "http://sonarqube.xxxxxx.com:9000",
  "sonar.scala.version" -> "2.11",
  "sonar.projectName" -> "xyz-starter",
  "sonar.projectKey" -> "xyz-starter",
  "sonar.sources" -> "src/main/scala",
  "sonar.tests" -> "src/test/scala",
  "sonar.scala.coverage.reportPaths" -> "xxxxxx/scala-2.11/coverage-report/cobertura.xml,xxxxxx/scala-2.11/scapegoat-report/scapegoat.xml",
  "sonar.login" -> token,
  "sonar.buildbreaker.skip" -> "false"
)

//how much code coverage is needed
coverageMinimum := 80
//fail the build if code coverage is not met
coverageFailOnMinimum := true
 

Весь файл sbt отображается красным цветом, включая имя, версию, масштабирование

когда я компилирую, следующая ошибка, которую я получаю сейчас

 /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/java -Djline.terminal=jline.UnsupportedTerminal -Dsbt.log.noformat=true -Dfile.encoding=UTF-8 -Didea.managed=true -Dfile.encoding=UTF-8 -jar /Users/xxxxxxx/Library/Application Support/JetBrains/IdeaIC2020.2/plugins/Scala/launcher/sbt-launch.jar
[info] welcome to sbt 1.4.5 (AdoptOpenJDK Java 11.0.9)
[info] loading global plugins from /Users/xxxxxxx/.sbt/1.0/plugins
[info] loading settings for project xxxxxxxxxxxxxxxxxxxxxxxxxx-build from assembly.sbt ...
[info] loading project definition from /Users/xxxxxxx/Documents/GitClone/xxxxxxxxxxxxxxxxxxxxxxxxxx/project
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[info] loading settings for project xxxxxxxxxxxxxxxxxxxxxxxxxx from build.sbt ...
[info] set current project to xxxxxxxxxxxxxxxxxxxxxxxxxx (in build file:/Users/xxxxxxx/Documents/GitClone/xxxxxxxxxxxxxxxxxxxxxxxxxx/)
[info] sbt server started at local:///Users/xxxxxxx/.sbt/1.0/server/5231834612cf96406db7/sock
[info] started sbt server
sbt:xxxxxxxxxxxxxxxxxxxxxxxxxx>
;set _root_.scala.collection.Seq(historyPath := None,shellPrompt := { _ => "" }
,SettingKey[_root_.scala.Option[_root_.sbt.File]]("sbtStructureOutputFile")
in _root_.sbt.Global := _root_.scala.Some(_root_.sbt.file("/private/var/folders/6p/qvsthwj11q38nxlpn72hv6fr0000gq/T/sbt-structure.xml"))
,SettingKey[_root_.java.lang.String]
("sbtStructureOptions")
in _root_.sbt.Global := "download, resolveClassifiers")
[info] Defining Global / sbtStructureOptions, Global / sbtStructureOutputFile and 1 others.
[info] The new values will be used by cleanKeepGlobs
[info]  Run `last` for details.
[info] Reapplying settings...
[info] set current project to xxxxxxxxxxxxxxxxxxxxxxxxxx (in build file:/Users/xxxxxxx/Documents/GitClone/xxxxxxxxxxxxxxxxxxxxxxxxxx/)
[info] Applying State transformations org.jetbrains.sbt.CreateTasks from /Users/xxxxxxx/Library/Application Support/JetBrains/IdeaIC2020.2/plugins/Scala/repo/org.jetbrains/sbt-structure-extractor/scala_2.12/sbt_1.0/2018.2.1 4-88400d3f/jars/sbt-structure-extractor.jar
[info] Reapplying settings...
[info] set current project to xxxxxxxxxxxxxxxxxxxxxxxxxx (in build file:/Users/xxxxxxx/Documents/GitClone/xxxxxxxxxxxxxxxxxxxxxxxxxx/)
[warn]
[warn]  Note: Unresolved dependencies path:
[error] stack trace is suppressed; run 'last update' for the full output
[error] stack trace is suppressed; run 'last ssExtractDependencies' for the full output
[error] (update) sbt.librarymanagement.ResolveException: Error downloading MrPowers:spark-fast-tests:0.20.0-s_2.11
[error]   Not found
[error]   Not found
[error]   not found: /Users/xxxxxxx/.ivy2/localMrPowers/spark-fast-tests/0.20.0-s_2.11/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/kelsa/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/data-engineering-gscl-fieldperformance/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error]   download error: Caught java.io.IOException: Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom (Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom) while downloading http://dl.bintray.com/spark-packages/maven/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error] Error downloading mrpowers:spark-daria:0.35.0-s_2.11
[error]   Not found
[error]   Not found
[error]   not found: /Users/xxxxxxx/.ivy2/localmrpowers/spark-daria/0.35.0-s_2.11/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/kelsa/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/data-engineering-gscl-fieldperformance/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error]   download error: Caught java.io.IOException: Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom (Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom) while downloading http://dl.bintray.com/spark-packages/maven/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error] (ssExtractDependencies) sbt.librarymanagement.ResolveException: Error downloading MrPowers:spark-fast-tests:0.20.0-s_2.11
[error]   Not found
[error]   Not found
[error]   not found: /Users/xxxxxxx/.ivy2/localMrPowers/spark-fast-tests/0.20.0-s_2.11/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/kelsa/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/data-engineering-gscl-fieldperformance/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error]   download error: Caught java.io.IOException: Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom (Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom) while downloading http://dl.bintray.com/spark-packages/maven/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
[error] Error downloading mrpowers:spark-daria:0.35.0-s_2.11
[error]   Not found
[error]   Not found
[error]   not found: /Users/xxxxxxx/.ivy2/localmrpowers/spark-daria/0.35.0-s_2.11/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/kelsa/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error]   not found: https://binrepo.target.com/artifactory/data-engineering-gscl-fieldperformance/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error]   download error: Caught java.io.IOException: Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom (Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom) while downloading http://dl.bintray.com/spark-packages/maven/mrpowers/spark-daria/0.35.0-s_2.11/spark-daria-0.35.0-s_2.11.pom
[error] Total time: 7 s, completed 19-May-2021, 6:44:44 PM
[info] shutting down sbt server

 

Любая идея о том, как ее решить.

Добавление скриншота того, как выглядит моя консоль введите описание изображения здесь

Комментарии:

1. можете ли вы опубликовать содержимое файла plugins.sbt ?

2. не удалось найти файл plugin.sbt

Ответ №1:

Весь файл sbt отображается красным цветом, включая имя, версию, масштабирование

Вероятно, это вызвано какой-то отсутствующей конфигурацией в IntelliJ, у вас должно быть какое-то всплывающее окно, предлагающее вам «настроить Scala SDK». Если нет, вы можете перейти в настройки своего модуля и добавить пакет SDK Scala.

когда я компилирую, следующая ошибка, которую я получаю сейчас

Если вы внимательно посмотрите на ошибку, вы должны заметить это сообщение:

 Server returned HTTP response code: 403 for URL: http://dl.bintray.com/spark-packages/maven/MrPowers/spark-fast-tests/0.20.0-s_2.11/spark-fast-tests-0.20.0-s_2.11.pom
 

Зависимости, которые вы ищете ( "MrPowers" % "spark-fast-tests" % "0.20.0-s_2.11" и "mrpowers" % "spark-daria" % "0.35.0-s_2.11" ), доступны только в этом репозитории http://dl.bintray.com/spark-packages/maven/ , который, по-видимому, требует некоторой аутентификации, как следует из кода ошибки HTTP 403.

Либо вы можете настроить проверку подлинности, либо вы можете использовать более поздние версии этих библиотек, опубликованные в общедоступном центральном репозитории Maven:

  • "com.github.mrpowers" %% "spark-daria" % "0.39.0"
  • "com.github.mrpowers" %% "spark-fast-tests" % "0.23.0"

ПРАВКА: как я это нашел? Я использовал https://mvnrepository.com/search?q=spark-дарья для поиска ваших зависимостей и поиска новых зависимостей с центральным флагом репозитория


Также обратите внимание, что есть несколько вещей, которые вы, возможно, захотите изменить в своей сборке.sbt:

  • Используйте «схему sbt» для использования зависимостей Scala без ручной настройки версии Scala:
    • использовать "com.github.mrpowers" %% "spark-daria" % "0.39.0"
    • вместо "com.github.mrpowers" % "spark-daria" % "0.39.0_2.11" (обратите внимание на двойник %% и отсутствие суффикса _2.11 )
  • Не объявляйте зависимость библиотеки Scala "org.scala-lang" % "scala-library" % scalaVersion.value , это неявно предусмотрено

Комментарии:

1. Для меня в intellij нет возможности «настроить Scala SDK». Я вручную пытаюсь это сделать, перейдя в Файл -> Структура проекта ->> В Настройках платформы ->>> Глобальные библиотеки, я удаляю и добавляю SDK Scala, т. Е. версию 2.12.2 ivy, но все равно при выполнении sbt получаю ту же ошибку зависимости. понятия не имею, что происходит.

2. Ошибка в IntelliJ также может быть связана с отсутствующими зависимостями, убедитесь, что ваш проект хорошо компилируется за пределами IntelliJ с sbt compile помощью first

3. мой проект успешно работает на другой машине.

4. Я добавил скриншот того, как выглядит моя консоль Intellij, на котором все показано красным цветом.

5. Внесли ли вы предложенные выше изменения в целевые зависимости, доступные в центральном репозитории Maven?

Ответ №2:

Проблема была связана с отсутствующей зависимостью, т. е.

 "MrPowers" % "spark-fast-tests" % "0.20.0-s_2.11",
"mrpowers" % "spark-daria" % "0.35.0-s_2.11"
 

После удаления этого из кода я обнаружил, что он также используется в другой зависимой банке

 //dependency of fields performance specific  common function
"abc-common" % "abc-common_2.11" % "3.0.0",
 

Удаление оттуда решило проблему.