如何更改SBT关于为Maven存储库生成URL的规则?

时间:2011-08-04 06:21:22

标签: scala maven sbt

默认情况下,Scala Built Tool(SBT)有一组关于在查找依赖项时如何生成URL的规则。例如,如果我有以下构建文件,

// Project settings
name := "MyProject"

version := "0.1"

organization := "com.me"

scalaVersion := "2.8.1"

// Dependencies
libraryDependencies ++= Seq(
   "com.google.guava" %% "guava" % "r09"
)

// Repositories
resolvers += "Maven Central Server" at "http://repo1.maven.org/maven2"

然后SBT尝试在以下URL找到番石榴,

http://repo1.maven.org/maven2/com/google/guava/guava_2.8.1/r09/guava_2.8.1-r09.pom

然而,在这种情况下我正在寻找的库甚至不是Scala,所以结合Scala版本在这里没有意义。如何告诉SBT生成用于Maven存储库的URL的格式是什么?

修改

虽然似乎可以像这样编辑布局,

Resolver.url("Primary Maven Repository",
    new URL("http://repo1.maven.org/maven2/"))( Patterns("[organization]/[module]/[module]-[revision].[ext]") )

“[module]”关键字预定义为(工件ID)_(scala版本),“[artifact]”关键字只是“常春藤”,让我回到正方形。

2 个答案:

答案 0 :(得分:9)

据我记得,“%%”附加了scala版本,而“%”则没有。尝试

libraryDependencies ++= Seq(
    "com.google.guava" % "guava" % "r09"
)

答案 1 :(得分:3)

检查官方sbt wiki here的最后一个段落(自定义布局)。

基本上SBT允许您使用以下语法:

resolvers += Resolver.url("my-test-repo", url)( Patterns("[organisation]/[module]/[revision]/[artifact].[ext]") )