Maven 仓库的解析器添加如下所示
resolvers +=
"Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
这是最常见的用户定义解析器类型。本页的其余部分描述了如何定义其他类型的仓库。
以下代码将解析器添加到 Maven 本地仓库
resolvers += Resolver.mavenLocal
要添加自定义位置的解析器
resolvers += MavenCache("local-maven", file("path/to/maven-repo/releases"))
提供了一些预定义的仓库,列出如下
Resolver.mavenLocal
这是本地 Maven 仓库。DefaultMavenRepository
这是位于 https://repo1.maven.org/maven2/ 的主 Maven 仓库,默认情况下包含在内JavaNet2Repository
这是位于 https://maven.java.net/content/repositories/public/ 的 java.net Maven2 仓库Resolver.sonatypeOssRepos("public")
(或“snapshots”、“staging”、“releases”) 这是位于 https://oss.sonatype.org/content/repositories/public、https://s01.oss.sonatype.org/content/repositories 的 Sonatype OSS Maven 仓库Resolver.typesafeRepo("releases")
(或“snapshots”) 这是位于 https://repo.typesafe.com/typesafe/releases 的 Typesafe 仓库Resolver.typesafeIvyRepo("releases")
(或“snapshots”) 这是位于 https://repo.typesafe.com/typesafe/ivy-releases 的 Typesafe Ivy 仓库Resolver.sbtPluginRepo("releases")
(或“snapshots”) 这是位于 https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases 的 sbt 社区仓库Resolver.bintrayRepo("owner", "repo")
这是位于 https://dl.bintray.com/[owner]/[repo]/ 的 Bintray 仓库Resolver.jcenterRepo
这是位于 https://jcenter.bintray.com/ 的 Bintray JCenter 仓库例如,要使用 java.net
仓库,请在构建定义中使用以下设置
resolvers += JavaNet2Repository
今后,预定义的仓库将归类到 Resolver 下,以便集中管理
Resolver.sonatypeOssRepos("releases") // Or "snapshots"
sbt 提供了对 Ivy 中提供的仓库类型(文件、URL、SSH 和 SFTP)的接口。Ivy 中仓库的一个关键功能是使用 模式 来配置仓库。
使用 sbt.Resolver
中的工厂为所需类型构造仓库定义。该工厂创建了一个 Repository
对象,可以对其进行进一步配置。下表包含指向仓库类型相关 Ivy 文档以及工厂和仓库类相关 API 文档的链接。SSH 和 SFTP 仓库的配置方式相同,只是工厂的名称不同。对于 SSH,使用 Resolver.ssh
,对于 SFTP,使用 Resolver.sftp
。
类型 | 工厂 | Ivy 文档 | 工厂 API | 仓库类 API |
---|---|---|---|---|
文件系统 | Resolver.file | Ivy 文件系统 | 文件系统工厂 | FileRepository API |
SFTP | Resolver.sftp | Ivy sftp | sftp 工厂 | SftpRepository API |
SSH | Resolver.ssh | Ivy ssh | ssh 工厂 | SshRepository API |
URL | Resolver.url | Ivy url | url 工厂 | URLRepository API |
这些是使用默认 Maven 风格仓库布局的基本示例。
在当前工作目录的 test
目录中定义一个文件系统仓库,并声明发布到该仓库必须是原子的。
resolvers += Resolver.file("my-test-repo", file("test")) transactional()
在 "https://example.org/repo-releases/"
中定义一个 URL 仓库。
resolvers += Resolver.url("my-test-repo", url("https://example.org/repo-releases/"))
要指定一个 Ivy 仓库,请使用
resolvers += Resolver.url("my-test-repo", url)(Resolver.ivyStylePatterns)
或自定义下面“自定义布局”部分中描述的布局模式。
以下代码定义了一个由主机 "example.org"
上的 SFTP 提供服务的仓库
resolvers += Resolver.sftp("my-sftp-repo", "example.org")
要显式指定端口
resolvers += Resolver.sftp("my-sftp-repo", "example.org", 22)
要指定基本路径
resolvers += Resolver.sftp("my-sftp-repo", "example.org", "maven2/repo-releases/")
可以通过 as
方法配置由 sftp
和 ssh
返回的仓库的身份验证。
要使用密码身份验证
resolvers += Resolver.ssh("my-ssh-repo", "example.org") as("user", "password")
或者要提示输入密码
resolvers += Resolver.ssh("my-ssh-repo", "example.org") as("user")
要使用密钥身份验证
resolvers += {
val keyFile: File = ...
Resolver.ssh("my-ssh-repo", "example.org") as("user", keyFile, "keyFilePassword")
}
或者如果不需要密钥文件密码或要提示输入密钥文件密码
resolvers += Resolver.ssh("my-ssh-repo", "example.org") as("user", keyFile)
要指定发布到服务器时使用的权限
resolvers += Resolver.ssh("my-ssh-repo", "example.org") withPermissions("0644")
这类似于 chmod 的模式规范。
这些示例使用模式指定自定义仓库布局。工厂方法接受一个 Patterns
实例,该实例定义要使用的模式。模式首先针对基本文件或 URL 进行解析。默认模式提供默认的 Maven 风格布局。提供一个不同的 Patterns 对象以使用不同的布局。例如
resolvers += Resolver.url("my-test-repo", url)( Patterns("[organisation]/[module]/[revision]/[artifact].[ext]") )
您可以指定多个模式,或者分别为元数据和工件指定模式。您还可以指定仓库是否应与 Maven 兼容(由 Ivy 定义)。有关要使用的方法,请参阅 模式 API。
对于文件系统和 URL 仓库,您可以通过省略基本 URL,传递一个空的 Patterns
实例并使用 ivys
和 artifacts
来指定绝对模式
resolvers += Resolver.url("my-test-repo") artifacts
"https://example.org/[organisation]/[module]/[revision]/[artifact].[ext]"