2014-01-05 67 views
0

我一直看到SBT項目在其構建定義如下resolvers設置:將本地Maven存儲庫添加到sbt的原因是什麼?

resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository" 

它在the official documentation of sbt in Resolvers節還描述。

我對使用sbt和構建管理工具的一般知識總體上讓我覺得它是一種反模式

原因是,如果一個項目在本地Maven資源庫中聲明瞭一個庫的依賴關係,那麼它首先會下載到那裏,所以它可以在本地Maven資源庫之外的某個地方使用。如果是這樣,爲什麼不使用原始存儲庫作爲源?

如果依賴關係不在公共存儲庫中,並且是項目的依賴關係,那麼項目可以使用dependsOn來聲明它,而不需要resolvers中的附加存儲庫。

請指教,因爲我可能會丟失一些明顯的東西,使resolvers設置不可或缺。

回答

4

一個明顯的原因是,如果你的依賴項之一是用maven構建的本地項目。

一種情況:

  1. 你有你建立與SBT
  2. X依賴於Y A X計劃。 Y是用maven構建的。
  3. 您需要修復/測試的y中存在一個錯誤,並且您希望在檢入x之前對x進行迴歸測試。
  4. 您構建y的快照​​,然後您可以在提交之前測試x改爲y。
+0

*使用maven *或任何非sbt構建工具構建,然後將其發佈到sbt項目可以從其中刪除的官方存儲庫。這就說得通了。謝謝! –

+0

我一直在思考答案,並提出了另一個問題 - 爲什麼對於這樣一個簡單的臨時更改,「解析器」設置不應該在全局配置中更改?爲什麼這會成爲項目'build.sbt'的一部分?這只是對'build.sbt'的臨時更改,而不會將其提交到scm存儲庫。 –

相關問題