2013-04-24 51 views
2

我們使用Scala的,演員2.10.x.內部庫它有它的build.sbtsbt:圖書館應該如何依賴scala-actors?

libraryDependencies <++= scalaVersion(v => 
    Seq("org.scala-lang" % "scala-actors" % v) 
) 

這個庫只編譯2.10.0並推送到我們的內部Maven回購。

我們的一個項目,這取決於庫已更新爲2.10.1。依賴項目有相同的libraryDependencies所以編譯依賴項目現在警告:

$ sbt 
[info] Loading project definition from /tmp/foo/project 
[info] Set current project to bar (in build file:/tmp/foo/) 
[warn] Potentially incompatible versions of dependencies of {file:/tmp/foo/}bar: 
[warn] org.scala-lang: 2.10.1, 2.10.0 

使用依賴SBT插件顯示的:

[info] +-com.example:ourlibrary_2.10:1.0.1 [S] 
[info] | +-org.scala-lang:scala-actors:2.10.0 (evicted by: 2.10.1) 
[info] | 
[info] +-org.scala-lang:scala-actors:2.10.1 [S] 

應該如何圖書館的libraryDependencies最好寫?我有以下幾種,但有沒有更清晰的方法?

libraryDependencies <++= scalaVersion(v => 
    { 
    // Use any version of scala-actors for this version of Scala. 
    val split = v.split('.') 
    val major = split(0).toInt 
    val minor = split(1).toInt 
    val revision = "[%s.%s,%s.%s)".format(major, minor, major, minor+1) 
    Seq("org.scala-lang" % "scala-actors" % revision) 
    } 
) 

回答

1

Scala 2.10.x保證是二進制兼容的,所以無論你做什麼都很好。常春藤似乎正常驅逐org.scala-lang:scala-actors:2.10.0,所以應該不會引起任何問題。

實際上你提到的警告消息被認爲是一個錯誤#709,它不應該被顯示在最近的SBT 0.12和0.13的版本。