mirror of https://github.com/sbt/sbt.git
more consistent configuration of the Ivy user directory
This commit is contained in:
parent
c7d920caf2
commit
c0f3677844
|
|
@ -5,13 +5,14 @@ package sbt
|
|||
|
||||
import org.apache.ivy.{core,plugins}
|
||||
import core.module.id.ModuleRevisionId
|
||||
import core.settings.IvySettings
|
||||
import plugins.resolver.{ChainResolver, DependencyResolver, IBiblioResolver}
|
||||
import plugins.resolver.{AbstractPatternsBasedResolver, AbstractSshBasedResolver, FileSystemResolver, SFTPResolver, SshResolver, URLResolver}
|
||||
|
||||
private object ConvertResolver
|
||||
{
|
||||
/** Converts the given sbt resolver into an Ivy resolver..*/
|
||||
def apply(r: Resolver) =
|
||||
def apply(r: Resolver)(implicit settings: IvySettings) =
|
||||
{
|
||||
r match
|
||||
{
|
||||
|
|
@ -69,7 +70,7 @@ private object ConvertResolver
|
|||
resolver.setM2compatible(true)
|
||||
resolver.setRoot(root)
|
||||
}
|
||||
private def initializeSSHResolver(resolver: AbstractSshBasedResolver, repo: SshBasedRepository)
|
||||
private def initializeSSHResolver(resolver: AbstractSshBasedResolver, repo: SshBasedRepository)(implicit settings: IvySettings)
|
||||
{
|
||||
resolver.setName(repo.name)
|
||||
resolver.setPassfile(null)
|
||||
|
|
@ -93,10 +94,10 @@ private object ConvertResolver
|
|||
setUser(user)
|
||||
}
|
||||
}
|
||||
private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: Patterns)
|
||||
private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: Patterns)(implicit settings: IvySettings)
|
||||
{
|
||||
resolver.setM2compatible(patterns.isMavenCompatible)
|
||||
patterns.ivyPatterns.foreach(resolver.addIvyPattern)
|
||||
patterns.artifactPatterns.foreach(resolver.addArtifactPattern)
|
||||
patterns.ivyPatterns.foreach(p => resolver.addIvyPattern(settings substitute p))
|
||||
patterns.artifactPatterns.foreach(p => resolver.addArtifactPattern(settings substitute p))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ private object IvySbt
|
|||
{
|
||||
def makeChain(label: String, name: String, rs: Seq[Resolver]) = {
|
||||
log.debug(label + " repositories:")
|
||||
val chain = resolverChain(name, rs, localOnly, log)
|
||||
val chain = resolverChain(name, rs, localOnly, settings, log)
|
||||
settings.addResolver(chain)
|
||||
chain
|
||||
}
|
||||
|
|
@ -189,7 +189,7 @@ private object IvySbt
|
|||
val mainChain = makeChain("Default", "sbt-chain", resolvers)
|
||||
settings.setDefaultResolver(mainChain.getName)
|
||||
}
|
||||
private def resolverChain(name: String, resolvers: Seq[Resolver], localOnly: Boolean, log: Logger): ChainResolver =
|
||||
private def resolverChain(name: String, resolvers: Seq[Resolver], localOnly: Boolean, settings: IvySettings, log: Logger): ChainResolver =
|
||||
{
|
||||
val newDefault = new ChainResolver
|
||||
newDefault.setName(name)
|
||||
|
|
@ -197,7 +197,7 @@ private object IvySbt
|
|||
newDefault.setCheckmodified(false)
|
||||
for(sbtResolver <- resolvers) {
|
||||
log.debug("\t" + sbtResolver)
|
||||
newDefault.add(ConvertResolver(sbtResolver))
|
||||
newDefault.add(ConvertResolver(sbtResolver)(settings))
|
||||
}
|
||||
newDefault
|
||||
}
|
||||
|
|
@ -210,7 +210,7 @@ private object IvySbt
|
|||
import IvyPatternHelper._
|
||||
import PatternMatcher._
|
||||
if(!existing.contains(resolver.name))
|
||||
settings.addResolver(ConvertResolver(resolver))
|
||||
settings.addResolver(ConvertResolver(resolver)(settings))
|
||||
val attributes = javaMap(Map(MODULE_KEY -> name, ORGANISATION_KEY -> organization, REVISION_KEY -> revision))
|
||||
settings.addModuleConfiguration(attributes, settings.getMatcher(EXACT_OR_REGEXP), resolver.name, null, null, null)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ object IvyCache
|
|||
/** A minimal Ivy setup with only a local resolver and the current directory as the base directory.*/
|
||||
private def basicLocalIvy(lock: Option[xsbti.GlobalLock], log: Logger) =
|
||||
{
|
||||
val local = Resolver.defaultLocal(None)
|
||||
val local = Resolver.defaultLocal
|
||||
val paths = new IvyPaths(new File("."), None)
|
||||
val conf = new InlineIvyConfiguration(paths, Seq(local), Nil, Nil, false, lock, log)
|
||||
(new IvySbt(conf), local)
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ object Resolver
|
|||
* If `scalaTools` is true, add the Scala Tools releases repository.
|
||||
* If `mavenCentral` is true, add the Maven Central repository. */
|
||||
def withDefaultResolvers(userResolvers: Seq[Resolver], mavenCentral: Boolean, scalaTools: Boolean): Seq[Resolver] =
|
||||
Seq(Resolver.defaultLocal(None)) ++
|
||||
Seq(Resolver.defaultLocal) ++
|
||||
userResolvers ++
|
||||
single(DefaultMavenRepository, mavenCentral)++
|
||||
single(ScalaToolsReleases, scalaTools)
|
||||
|
|
@ -270,14 +270,13 @@ object Resolver
|
|||
def mavenStyleBasePattern = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
|
||||
def localBasePattern = "[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]"
|
||||
|
||||
def userRoot = System.getProperty("user.home")
|
||||
def userMavenRoot = userRoot + "/.m2/repository/"
|
||||
def userIvyRoot = userRoot + "/.ivy2/"
|
||||
private def userIvyRootFile = new File(userIvyRoot)
|
||||
|
||||
def defaultLocal(ivyHome: Option[File]) = defaultUserFileRepository(ivyHome, "local")
|
||||
def defaultShared(ivyHome: Option[File]) = defaultUserFileRepository(ivyHome, "shared")
|
||||
def defaultUserFileRepository(ivyHome: Option[File], id: String) = file(id, new File(ivyHome.getOrElse(userIvyRootFile), id))(defaultIvyPatterns)
|
||||
def defaultLocal = defaultUserFileRepository("local")
|
||||
def defaultShared = defaultUserFileRepository("shared")
|
||||
def defaultUserFileRepository(id: String) =
|
||||
{
|
||||
val pList = ("${ivy.home}/" + id + "/" + localBasePattern) :: Nil
|
||||
FileRepository(id, defaultFileConfiguration, Patterns(pList, pList, false))
|
||||
}
|
||||
def defaultIvyPatterns =
|
||||
{
|
||||
val pList = List(localBasePattern)
|
||||
|
|
|
|||
Loading…
Reference in New Issue