IntelliJ中Scala-Spark项目SBT编译出现未解析依赖错误的解决方法求助
解决SBT未解析依赖错误(Spark/Scala开发环境)
问题背景
我在IntelliJ中全新搭建了Spark、Scala、SBT开发环境,但编译SBT时遇到了未解析依赖错误,build.sbt文件整体标红,控制台报错指向MrPowers:spark-fast-tests和mrpowers:spark-daria这两个依赖无法下载。
我的build.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
控制台错误日志:
/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
错误原因分析
从日志里能看出两个核心问题:
- Spark Packages仓库失效:你配置的
http://dl.bintray.com/spark-packages/maven返回403错误,因为Bintray已经停止服务了,这个仓库不再可用。 - 依赖坐标错误:
MrPowers:spark-fast-tests和mrpowers:spark-daria的坐标不符合Maven规范,正确的组织名应该是com.github.mrpowers,而且版本号里的-s_2.11后缀是多余的,SBT的%%会自动匹配你的Scala版本(2.11)。
解决方案
1. 替换失效的Spark Packages仓库
把原来的Bintray仓库替换为有效的Spark Packages镜像,或者直接使用Maven Central(大部分Spark Packages已经迁移到这里了)。修改resolvers部分:
resolvers ++= Seq( "Artifactory" at "https://binrepo.xxxxxx.com/artifactory/xyz/", "Artifactory Common" at "https://binrepo.xxxxxx.com/artifactory/data-engineering-gscl-abc/", // 替换为有效的Spark Packages仓库 "Spark Packages Repo" at "https://repo.spark-packages.org/", // 确保Maven Central可用(默认已经包含,但可以显式添加) "Maven Central" at "https://repo1.maven.org/maven2/" )
2. 修正依赖坐标
把那两个错误的依赖替换为正确的坐标,使用%%自动匹配Scala版本:
libraryDependencies ++= Seq( // ... 其他依赖保持不变 // 修正后的spark-fast-tests(测试依赖,添加Test标记) "com.github.mrpowers
相关产品推荐
相关产品推荐

