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]"