底线是,我想发布一个可以使用 SBT
或者 Maven
其依赖项不会与集成项目的依赖项或可传递依赖项冲突。
目前我正在通过 SBT
使用 publish
命令,该命令配置为将工件发布到我的私有 JFrog Artifactory
.
它正在按预期工作,因为它将把图书馆出版给 artifactory
我可以轻松地将结果库集成到不同的项目中 SBT
还有 Maven
.
不幸的是,我发布的库有第三方依赖关系。它正在使用 cassandra datastax library
版本 3.3.0
.
我遇到了一个糟糕的情况,我的库的一个用户还依赖于另一个第三方库(我无法控制),它本身依赖于同一个cassandra驱动程序( flink-connector-cassandra
谁的pom可以在这里找到https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-cassandra/pom.xml),谁的 casandra-driver
版本为 3.0.0
.
我尝试了各种排除的组合,并将库的cassandra版本更改为与第三方版本匹配( 3.3.0
~>改成 3.0.0
就像在 flink-connector-cassandra
)在消费市场 SBT
文件。
不幸的是,由于内部找不到类和方法,使用者在运行时崩溃 cassandra-driver
图书馆。
我想也许我可以把我的图书馆当作“肥肉”来分发 jar
,内联 cassandra
依赖关系(以及它自己的可传递的第三方依赖关系)和“挤压”命名空间以嵌套在my libraries命名空间下,以避免冲突(即 com.cassandra.driver
可以在下面筑巢 com.myproject
作为 com.myproject.cassandra.driver
或者类似的效果),希望能解决与flink cassandra驱动程序的运行时冲突。
有没有一个切实可行的方法来避免这些冲突 assembly
或者 publish
命令?
我的图书馆 SBT
看起来像这样(我正在发布的库):
lazy val commonSettings = Seq(
scalaVersion := "2.11.8",
sources in doc in Compile := List(),
organization := "com.myLibrary.library",
name := "commons",
version := "0.4.1.1",
publishTo := Some("Artifactory Realm" at "https://a.b.c.jfrog.io/myLibrary"),
javacOptions ++= Seq("-source", "1.7", "-target", "1.7", "-Xlint")
)
lazy val myLibrary: Project = project.in(file("myLibrary"))
.settings(
commonSettings,
name := "myLibrary",
assemblyJarName in assembly := "myLibrary.jar",
libraryDependencies ++= Seq(
"com.datastax.cassandra" % "cassandra-driver-core" % "3.3.0" // << I've also tried to change this to match the flink's version of 3.0.0
// I've also tried to add
// classifier "shaded"
)
)
消费sbt文件如下所示:
val dependencies: Seq[ModuleID] = commonDependencies ++ flinkDeps ++ Seq(
"org.apache.flink" %% "flink-connector-cassandra" % "1.4.1" ,
"com.mylibrary" %% "library" % "0.4.1"
)
我已经试着修改过了 SBT
排除cassandra驱动程序,但它不起作用:
val dependencies: Seq[ModuleID] = commonDependencies ++ flinkDeps ++ Seq(
"org.apache.flink" %% "flink-connector-cassandra" % "1.4.1" excludeAll ExclusionRule(organization = "com.datastax"),
"com.mylibrary" %% "library" % "0.4.1"
)
暂无答案!
目前还没有任何答案,快来回答吧!