2013-11-26 28 views
0

我正在用sbt 0.13構建多個Java項目。項目A使用默認的「sbt publish」任務在$ HOME/maven2.artifacts/www/x/y/abc/1.0.1/abc-1.0.1.jar中發佈庫「abc」。它的工作,圖書館在那裏如預期的那樣。動態庫sbt 0.13中的依賴項不起作用?

項目B依賴於此工件。它聲明解析器(從build.sbt所有代碼):

resolvers ++= Seq(
    "Developer's repo" at "file://"+Path.userHome.absolutePath+"/maven2.artifacts/www" 
) 

...和參考值:

val abc_core = "x.y" % "abc" % "1.0.1" 

然後,它使用在項目定義中提到:

lazy val def_symbol=project settings(
    name:="def-symbol", 
    libraryDependencies += abc_core 
) 

This works。但是,當我改變的價值定義爲使用動態版本ID爲SBT文檔建議將其設置爲

val abc_core = "x.y" % "abc" % "1.0.+" 

val abc_core = "x.y" % "abc" % "1.+" 

它不工作了:

[warn] module not found: x.y#abc;1.+ 
[warn] ==== local: tried 
[warn] /home/dh/.ivy2/local/x.y/abc/[revision]/ivys/ivy.xml 
[warn] ==== public: tried 
[warn] http://repo1.maven.org/maven2/x/y/abc/[revision]/abc-[revision].pom 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: x.y#abc;1.+: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 

我看到sbt似乎沒有問我的基於文件的解析器的依賴關係。這是問題嗎?我該如何解決它?

回答

2

嗯,

問題解決了。我不得不宣佈在全球範圍內的解析器擴展,使子項目還用它:

resolvers in Global ++= Seq(
    "Developer's repo" at "file://"+Path.userHome.absolutePath+"/maven2.artifacts/www" 
) 

然後投射def_symbol還採用「開發的回購」,一切工作完全與版本像"1.0.+""1.+"預期。

在全局範圍內沒有解析器可用,但是解析圖書館工作仍然是由於版本1.0.1在另一個版本的Ivy本地緩存中可用。從頭開始,它也不會奏效。

對不起。我應該在發帖之前再等一天。