【问题标题】:Add a maven dependency to SBT project向 SBT 项目添加 Maven 依赖项
【发布时间】:2020-01-20 00:38:33
【问题描述】:

我试图在我的 build.sbt 文件中引用一个 maven 项目依赖项。我知道我需要在我的文件中添加一个额外的 resolver,因为该项目托管在内部工件商店中

build.sbt

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.4.4",
  "org.apache.spark" %% "spark-sql" % "2.4.4",
  "com.<companyname>" %% "<libraryname>" % "2.3.0"
)

resolvers += "<library name>" at "http://artifactory.<internal url>.io:80/dsc-mvn"

但是,事实证明 SBT 最终会搜索附加了 _2.11 版本的路径。这是我在 IntelliJ 中看到的错误消息

[info] Loading settings for project sbt-demo from build.sbt ...
[warn] Discarding 1 session setting.  Use 'session save' to persist session settings.
[info] Set current project to SparkExample (in build file:<project_path>)
[info] Defining Global / sbtStructureOptions
[info] The new value will be used by Global / ssOptions
[info] Reapplying settings...
[info] Set current project to SparkExample (in build file:<project_path>)
[info] Updating ...
[warn]  module not found: com.<companyname>#<libraryname>_2.11;2.3.0
[warn] ==== local: tried
[warn]   /Users/vshah/.ivy2/local/com.<companyname>/<libraryname>_2.11/2.3.0/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/com/<companyname>/<libraryname>_2.11/2.3.0/<libraryname>_2.11-2.3.0.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/vshah/.sbt/preloaded/com.<companyname>/<libraryname>_2.11/2.3.0/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/vshah/.sbt/preloaded/com/<companyname>/<libraryname>_2.11/2.3.0/<libraryname>_2.11-2.3.0.pom
[warn] ==== <libraryname>: tried
[warn]   http://artifactory.<internal url>.io:80/dsc-mvn/com/<companyname>/<libraryname>_2.11/2.3.0/<libraryname>_2.11-2.3.0.pom
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.<companyname>#<libraryname>_2.11;2.3.0: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]

无效路径(因为项目试图在上面搜索)- http://artifactory.&lt;internal url&gt;.io/dsc-mvn/com/&lt;companyname&gt;/&lt;libraryname&gt;_2.11/2.3.0/&lt;libraryname&gt;_2.11-2.3.0.pom

有效路径 - http://artifactory.&lt;internal url&gt;.io/dsc-mvn/com/&lt;companyname&gt;/&lt;libraryname&gt;/2.3.0/&lt;libraryname&gt;_2.11-2.3.0.pom

我的问题是如何让 SBT 知道我在上述有效路径上引用了一个 maven 项目?

【问题讨论】:

  • 如果您想添加一个 Java 依赖项,只需在组织和依赖项名称之间使用一个 %。 double %% 告诉 sbt 自动将 scala 版本添加到依赖项名称的末尾。

标签: scala maven sbt sbt-plugin sbt-revolver


【解决方案1】:

这应该可行:

"com.<companyname>" % "<libraryname>" % "2.3.0"

定义中的%% 自动将项目scala 版本附加到库名称中。查看official sbt documentation 了解更多信息。

【讨论】:

    【解决方案2】:

    请参阅https://mvnrepository.com/artifact/org.scala-sbt 为您的项目获取正确的构建工具,并检查依赖项中的版本是否与您的 scala 版本匹配。

    你能告诉我更多关于你需要的依赖类型吗?

    【讨论】:

      猜你喜欢
      • 2017-03-07
      • 2015-03-30
      • 2017-05-20
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      相关资源
      最近更新 更多