我尝试编写一个使用jsch的简单sbt插件。由于安全原因(ecdsa),我的要求是在 0.1.53 中使用jsch。我在build.sbt
文件中声明了依赖项:
libraryDependencies += "com.jcraft" % "jsch" % "0.1.53"
不幸的是org.scala-sbt:ivy
2.3.0引入了对 0.1.46 的依赖。 SBT表示虽然在运行时使用我的插件时有旧版本的驱逐我可以看到它仍然在0.1.46 jsch下运行。
[info] com.jcraft:jsch
[info] - 0.1.46
[info] status: release
[info] publicationDate: Thu Feb 02 13:39:27 CET 2012
[info] resolver: sbt-chain
[info] artifactResolver: sbt-chain
[info] evicted: true
[info] evictedData: latest-revision
[info] homepage: http://www.jcraft.com/jsch/
[info] isDefault: false
[info] configurations: default, compile, runtime, default(compile), master
[info] licenses: (Revised BSD,Some(http://www.jcraft.com/jsch/LICENSE.txt))
[info] callers: org.scala-sbt:ivy:0.13.11
[info] - 0.1.53
[info] status: release
[info] publicationDate: Fri Jun 05 17:32:00 CEST 2015
[info] resolver: sbt-chain
[info] artifactResolver: sbt-chain
[info] evicted: false
[info] homepage: http://www.jcraft.com/jsch/
[info] isDefault: false
[info] configurations: default, compile, runtime, default(compile), master
[info] licenses: (Revised BSD,Some(http://www.jcraft.com/jsch/LICENSE.txt))
[info] callers: com.evojam:sbt-ssh:0.1.1-SNAPSHOT (scalaVersion=2.10, sbtVersion=0.13), org.scala-sbt:ivy:0.13.11
我在版本 0.13.11 中使用了sbt。
我已将我的插件添加到测试项目中。运行我的sbt任务时,我得到明确的日志消息: [info]本地版本字符串:SSH-2.0-JSCH-0.1.46 以及关于不支持的算法的错误,这导致我得出结论,我的版本的jsch已被某种方式覆盖。
问题是在编写sbt插件时如何处理库驱逐?
答案 0 :(得分:0)
可能你可以试试:
dependencyOverrides += "com.jcraft" % "jsch" % "0.1.53"
但我怀疑jbch的sbt版本是在插件之前的jvm类路径中加载的。
有一个问题需要更新到ivy 2.4;这也将更新使用过的jsch版本:https://github.com/sbt/sbt/issues/1920