如何声明 Flink sbt 跨版本依赖关系



我想使用 sbt 交叉编译功能编译一个带有 Scala 2.10 和 2.11 的项目。问题是这个项目包含了一些 Flink 依赖项。但是 Flink jar 不遵循标准的二进制格式(在名称后加上 _2.10_2.11 ):scala 2.10 jar 没有后缀,而 2.11 有后缀。

我找到了一个可行的解决方案。但我对此并不满意,我的问题是:有没有更简单和/或更优雅的方法来解决这个问题?

我目前的解决方案:

def flinkDependencies(scalaVersion: String) = {
    if (scalaVersion.startsWith("2.10"))
        Seq(
         "org.apache.flink" % "flink-scala" % flinkVersion % "optional",
         "org.apache.flink" % "flink-streaming-scala" % flinkVersion % "optional"
        )
    else
      Seq(
          "org.apache.flink" %% "flink-scala" % flinkVersion % "optional",
          "org.apache.flink" %% "flink-streaming-scala" % flinkVersion % "optional"
      )
}
libraryDependencies <++= scalaVersion(flinkDependencies)

是的,这就是你必须这样做的方式。一个稍短的版本是这样的:

libraryDependencies ++= {
  val suffix = if (scalaVersion.value.startsWith("2.11")) "_2.11" else ""
  Seq(
    "org.apache.flink" % s"flink-scala$suffix"           % flinkV % "optional",
    "org.apache.flink" % s"flink-streaming-scala$suffix" % flinkV % "optional"
  )
}

相关内容

  • 没有找到相关文章

最新更新