2014-01-05 42 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存储库。 –

相关问题