SBT:描述相对于另一个(传递性)依赖项的外部依赖项?

SBT:描述相对于另一个(传递性)依赖项的外部依赖项?,sbt,dependency-management,ivy,coursier,Sbt,Dependency Management,Ivy,Coursier,为了避免jar地狱,我想相对地引用一个依赖项 例如,当我将依赖项添加到“org.http4s”%%“https circe”%%“0.21.1”: cs resolve org.http4s:http4s-circe_2.12:0.21.1 | grep-i circe⎈ eks-cluster-eu-west-1-dev/master io.circe:circe-core_2.12:0.13.0:默认值 我想为版本中的“circe literal”添加一个依赖项,该依赖项由SBT的中介自动

为了避免jar地狱,我想相对地引用一个依赖项

例如,当我将依赖项添加到
“org.http4s”%%“https circe”%%“0.21.1”

cs resolve org.http4s:http4s-circe_2.12:0.21.1 | grep-i circe⎈ eks-cluster-eu-west-1-dev/master
io.circe:circe-core_2.12:0.13.0:默认值

我想为版本中的
“circe literal”
添加一个依赖项,该依赖项由SBT的中介自动解决。在本例中,
“0.13.0”
。这可能吗?

一方面,您可以添加带有通配符版本的
circe literal
,使用
最新兼容的
冲突管理器将获得与
circe core
兼容的版本。不幸的是,如果不使用coursier插件,就无法为特定工件指定冲突管理器

但是,如果没有问题,您应该能够指定:

conflictManager := ConflictManager.latestCompatible
libraryDependencies += "io.circe" %% "circe-literal % "[0,)"
不过,您必须使用常春藤解析器才能使其正常工作

dependencyResolution := sbt.librarymanagement.ivy.IvyDependencyResolution(ivyConfiguration.value)
利用这一点,我得到了你想要的东西:

[info]  [SUCCESSFUL ] io.circe#circe-literal_2.12;0.13.0!circe-literal_2.12.jar (304ms)

这很好-谢谢你。如果
circe literal
的版本不受任何(可传递的)依赖项的约束,例如,如果没有指定对
“org.http4s”%%“https circe”
的依赖项,并且解决了该时间点的最新在线依赖项,我是否可以指定它应该失败?@StefanK。大概Ivy允许定制版本管理器,在这种情况下,您实际上可以查找其他依赖项,以确定您需要什么依赖项,否则将失败。我不知道是否可以将其用于sbt——我看过ant的文档。而且,这看起来需要做很多工作。