more consistent configuration of the Ivy user directory

This commit is contained in:
Mark Harrah 2011-03-12 10:28:53 -05:00
parent c7d920caf2
commit c0f3677844
4 changed files with 19 additions and 19 deletions

View File

@ -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))
}
}

View File

@ -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)
}

View File

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

View File

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