Flink sbt 如何声明跨版本依赖?
How to declare Flink sbt cross version dependencies?
我想使用 sbt 交叉编译功能使用 Scala 2.10 和 2.11 编译一个项目。问题是这个项目包含一些 Flink 依赖项。但是 Flink jar 不遵循标准的二进制格式(在名称后缀 _2.10
或 _2.11
):scala 2.10 jars do not have a postfix and the 2.11 有它。
我找到了可行的解决方案。但我对此并不满意,我的问题是:有没有更简单 and/or 更优雅的方法来解决这个问题?
我目前的解决方案:
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"
)
}
我想使用 sbt 交叉编译功能使用 Scala 2.10 和 2.11 编译一个项目。问题是这个项目包含一些 Flink 依赖项。但是 Flink jar 不遵循标准的二进制格式(在名称后缀 _2.10
或 _2.11
):scala 2.10 jars do not have a postfix and the 2.11 有它。
我找到了可行的解决方案。但我对此并不满意,我的问题是:有没有更简单 and/or 更优雅的方法来解决这个问题?
我目前的解决方案:
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"
)
}