2016-05-11 37 views
1

我嘗試寫一個簡單的sbt插件,它使用的是jsch。由於安全原因(ecdsa),我的要求是在0.1.53中使用jsch。我宣佈我的build.sbt文件的依賴性:如何在編寫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 

我用SBT版本0.13.11

我已將我的插件添加到測試項目中。當我運行我的sbt任務時,我得到清除日誌消息: [info]本地版本字符串:SSH-2.0-JSCH-0.1.46 和一個關於不支持的算法的錯誤,這導致我得出結論,我的版本jsch已被覆寫。

問題是如何在編寫sbt插件時處理圖書館驅逐?

回答

0

可能是你可以嘗試使用:

dependencyOverrides += "com.jcraft" % "jsch" % "0.1.53" 

但我懷疑jsch的SBT版本是在JVM類路徑插件之前加載。

更新到ivy 2.4有一個問題;這也將更新使用jsch版本:https://github.com/sbt/sbt/issues/1920

+0

不幸的是,這是行不通的。儘管可能需要一些時間,但我很樂意看到ivy 2.4更新了jsch。 – ar2r