Resolvers for Maven repositories are added as follows:
resolvers +=
"Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
This is the most common kind of user-defined resolvers. The rest of this page describes how to define other types of repositories.
Following adds a resolver to the Maven local repository:
resolvers += Resolver.mavenLocal
To add a resolver for a custom location:
resolvers += MavenCache("local-maven", file("path/to/maven-repo/releases"))
A few predefined repositories are available and are listed below
Resolver.mavenLocal
This is the local Maven repository.
DefaultMavenRepository
This is the main Maven repository at
https://repo1.maven.org/maven2/ and is included by default
JavaNet2Repository
This is the java.net Maven2 Repository at
https://maven.java.net/content/repositories/public/
Resolver.sonatypeOssRepos("public")
(or “snapshots”, “staging”, “releases”) This is Sonatype OSS Maven Repository at
https://oss.sonatype.org/content/repositories/public, https://s01.oss.sonatype.org/content/repositories
Resolver.typesafeRepo("releases")
(or “snapshots”) This is Typesafe Repository at
https://repo.typesafe.com/typesafe/releases
Resolver.typesafeIvyRepo("releases")
(or “snapshots”) This is Typesafe Ivy Repository at
https://repo.typesafe.com/typesafe/ivy-releases
Resolver.sbtPluginRepo("releases")
(or “snapshots”) This is sbt Community Repository at
https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases
Resolver.bintrayRepo("owner", "repo")
This is the Bintray repository at
https://dl.bintray.com/[owner]/[repo]/
Resolver.jcenterRepo
This is the Bintray JCenter repository at
https://jcenter.bintray.com/
For example, to use the java.net
repository, use the following setting
in your build definition:
resolvers += JavaNet2Repository
Predefined repositories will go under Resolver going forward so they are in one place:
Resolver.sonatypeOssRepos("releases") // Or "snapshots"
sbt provides an interface to the repository types available in Ivy: file, URL, SSH, and SFTP. A key feature of repositories in Ivy is using patterns to configure repositories.
Construct a repository definition using the factory in sbt.Resolver
for the desired type. This factory creates a Repository
object that
can be further configured. The following table contains links to the Ivy
documentation for the repository type and the API documentation for the
factory and repository class. The SSH and SFTP repositories are
configured identically except for the name of the factory. Use
Resolver.ssh
for SSH and Resolver.sftp
for SFTP.
Type | Factory | Ivy Docs | Factory API | Repository Class API |
---|---|---|---|---|
Filesystem | Resolver.file | Ivy filesystem | filesystem factory | FileRepository API |
SFTP | Resolver.sftp | Ivy sftp | sftp factory | SftpRepository API |
SSH | Resolver.ssh | Ivy ssh | ssh factory | SshRepository API |
URL | Resolver.url | Ivy url | url factory | URLRepository API |
These are basic examples that use the default Maven-style repository layout.
Define a filesystem repository in the test
directory of the current
working directory and declare that publishing to this repository must be
atomic.
resolvers += Resolver.file("my-test-repo", file("test")) transactional()
Define a URL repository at "https://example.org/repo-releases/"
.
resolvers += Resolver.url("my-test-repo", url("https://example.org/repo-releases/"))
To specify an Ivy repository, use:
resolvers += Resolver.url("my-test-repo", url)(Resolver.ivyStylePatterns)
or customize the layout pattern described in the Custom Layout section below.
The following defines a repository that is served by SFTP from host
"example.org"
:
resolvers += Resolver.sftp("my-sftp-repo", "example.org")
To explicitly specify the port:
resolvers += Resolver.sftp("my-sftp-repo", "example.org", 22)
To specify a base path:
resolvers += Resolver.sftp("my-sftp-repo", "example.org", "maven2/repo-releases/")
Authentication for the repositories returned by sftp
and ssh
can be
configured by the as
methods.
To use password authentication:
resolvers += Resolver.ssh("my-ssh-repo", "example.org") as("user", "password")
or to be prompted for the password:
resolvers += Resolver.ssh("my-ssh-repo", "example.org") as("user")
To use key authentication:
resolvers += {
val keyFile: File = ...
Resolver.ssh("my-ssh-repo", "example.org") as("user", keyFile, "keyFilePassword")
}
or if no keyfile password is required or if you want to be prompted for it:
resolvers += Resolver.ssh("my-ssh-repo", "example.org") as("user", keyFile)
To specify the permissions used when publishing to the server:
resolvers += Resolver.ssh("my-ssh-repo", "example.org") withPermissions("0644")
This is a chmod-like mode specification.
These examples specify custom repository layouts using patterns. The
factory methods accept an Patterns
instance that defines the patterns
to use. The patterns are first resolved against the base file or URL.
The default patterns give the default Maven-style layout. Provide a
different Patterns object to use a different layout. For example:
resolvers += Resolver.url("my-test-repo", url)( Patterns("[organisation]/[module]/[revision]/[artifact].[ext]") )
You can specify multiple patterns or patterns for the metadata and artifacts separately. You can also specify whether the repository should be Maven compatible (as defined by Ivy). See the patterns API for the methods to use.
For filesystem and URL repositories, you can specify absolute patterns
by omitting the base URL, passing an empty Patterns
instance, and
using ivys
and artifacts
:
resolvers += Resolver.url("my-test-repo") artifacts
"https://example.org/[organisation]/[module]/[revision]/[artifact].[ext]"