如何声明flink-sbt跨版本依赖关系?

0yycz8jy  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(338)

我想用scala2.10和2.11使用sbt交叉编译特性编译一个项目。问题是这个项目包含一些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)
dba5bblo

dba5bblo1#

是的,你必须这样做。略短的版本如下:

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"
  )
}

相关问题