1. 解析器 (Resolvers)

解析器 

Maven 解析器 

Maven 儲存庫的解析器新增方式如下

resolvers +=
  "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"

這是最常見的使用者自訂解析器類型。本頁的其餘部分說明如何定義其他類型的儲存庫。

本機 Maven 解析器 

以下將解析器新增至 Maven 本機儲存庫

resolvers += Resolver.mavenLocal

要為自訂位置新增解析器

resolvers += MavenCache("local-maven", file("path/to/maven-repo/releases"))

預先定義的解析器 

以下列出一些可用的預先定義儲存庫

例如,要使用 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()
URL 

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

或自訂下方自訂配置部分中描述的配置模式。

SFTP 和 SSH 儲存庫 

以下定義一個由主機 "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 方法設定 sftpssh 回傳的儲存庫的驗證。

要使用密碼驗證

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 執行個體並使用 ivysartifacts 來指定絕對模式

resolvers += Resolver.url("my-test-repo") artifacts
        "https://example.org/[organisation]/[module]/[revision]/[artifact].[ext]"