SBT:描述相对于另一个(传递性)依赖项的外部依赖项?
为了避免jar地狱,我想相对地引用一个依赖项 例如,当我将依赖项添加到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的中介自动
“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的文档。而且,这看起来需要做很多工作。