【问题标题】:sbt: How do I resolve Maven dependencies that uses Maven propertiessbt:如何解决使用 Maven 属性的 Maven 依赖项
【发布时间】:2018-03-27 14:04:47
【问题描述】:

例如:

lazy val someProject = project
  .settings(
    scalaVersion := "2.12.3",
    libraryDependencies += "org.jcuda" % "jcuda" % "0.8.0"
  )

以上没有解决:

sbt:someProject> update
[info] Updating ...
[info] downloading https://repo1.maven.org/maven2/org/jcuda/jcuda/0.8.0/jcuda-0.8.0.jar ...
[warn]  Detected merged artifact: [NOT FOUND  ] org.jcuda#jcuda-natives;0.8.0!jcuda-natives.jar (16ms).
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/jcuda/jcuda-natives/0.8.0/jcuda-natives-0.8.0-${jcuda.os}-${jcuda.arch}.jar
[info]  [SUCCESSFUL ] org.jcuda#jcuda;0.8.0!jcuda.jar (227ms)
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::              FAILED DOWNLOADS            ::
[warn]  :: ^ see resolution messages for details  ^ ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.jcuda#jcuda-natives;0.8.0!jcuda-natives.jar
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

注意出现在错误消息中的${jcuda.os}

【问题讨论】:

  • 仅供参考,使用coursier 开箱即用即可正常工作(使用 1.0.0-RC12 测试)。
  • @al3xar 请将其发布为答案。
  • 阅读 coursier 我希望它可以与 sbt 1.3.3 一起使用(因为 sbt 从 1.3.0 开始应该使用 coursier),但我仍然遇到同样的问题。如何在 sbt 项目中使用 coursier 来避免这个问题?

标签: scala maven sbt


【解决方案1】:

作为一种解决方法,您可以设置自定义设置并将 Maven 属性的值作为 JVM 属性提供:

lazy val mavenProps = settingKey[Unit]("workaround for Maven properties")
lazy val jcudaOs = settingKey[String]("")
lazy val jcudaArch = settingKey[String]("")
lazy val someProject = project
  .settings(
    scalaVersion := "2.12.3",
    libraryDependencies += "org.jcuda" % "jcuda" % "0.8.0",
    jcudaOs := "linux",
    jcudaArch := "x86_64",
    mavenProps := {
      sys.props("jcuda.os") = jcudaOs.value
      sys.props("jcuda.arch") = jcudaArch.value
      ()
    }
  )

这会将缺少的 Maven 属性拆分为 sbt 设置,然后在构建加载时将它们转换为 sys.props

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2011-04-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多