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 org.apache.ivy.{core,plugins}
import core.module.id.ModuleRevisionId import core.module.id.ModuleRevisionId
import core.settings.IvySettings
import plugins.resolver.{ChainResolver, DependencyResolver, IBiblioResolver} import plugins.resolver.{ChainResolver, DependencyResolver, IBiblioResolver}
import plugins.resolver.{AbstractPatternsBasedResolver, AbstractSshBasedResolver, FileSystemResolver, SFTPResolver, SshResolver, URLResolver} import plugins.resolver.{AbstractPatternsBasedResolver, AbstractSshBasedResolver, FileSystemResolver, SFTPResolver, SshResolver, URLResolver}
private object ConvertResolver private object ConvertResolver
{ {
/** Converts the given sbt resolver into an Ivy resolver..*/ /** Converts the given sbt resolver into an Ivy resolver..*/
def apply(r: Resolver) = def apply(r: Resolver)(implicit settings: IvySettings) =
{ {
r match r match
{ {
@ -69,7 +70,7 @@ private object ConvertResolver
resolver.setM2compatible(true) resolver.setM2compatible(true)
resolver.setRoot(root) 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.setName(repo.name)
resolver.setPassfile(null) resolver.setPassfile(null)
@ -93,10 +94,10 @@ private object ConvertResolver
setUser(user) setUser(user)
} }
} }
private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: Patterns) private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: Patterns)(implicit settings: IvySettings)
{ {
resolver.setM2compatible(patterns.isMavenCompatible) resolver.setM2compatible(patterns.isMavenCompatible)
patterns.ivyPatterns.foreach(resolver.addIvyPattern) patterns.ivyPatterns.foreach(p => resolver.addIvyPattern(settings substitute p))
patterns.artifactPatterns.foreach(resolver.addArtifactPattern) 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]) = { def makeChain(label: String, name: String, rs: Seq[Resolver]) = {
log.debug(label + " repositories:") log.debug(label + " repositories:")
val chain = resolverChain(name, rs, localOnly, log) val chain = resolverChain(name, rs, localOnly, settings, log)
settings.addResolver(chain) settings.addResolver(chain)
chain chain
} }
@ -189,7 +189,7 @@ private object IvySbt
val mainChain = makeChain("Default", "sbt-chain", resolvers) val mainChain = makeChain("Default", "sbt-chain", resolvers)
settings.setDefaultResolver(mainChain.getName) 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 val newDefault = new ChainResolver
newDefault.setName(name) newDefault.setName(name)
@ -197,7 +197,7 @@ private object IvySbt
newDefault.setCheckmodified(false) newDefault.setCheckmodified(false)
for(sbtResolver <- resolvers) { for(sbtResolver <- resolvers) {
log.debug("\t" + sbtResolver) log.debug("\t" + sbtResolver)
newDefault.add(ConvertResolver(sbtResolver)) newDefault.add(ConvertResolver(sbtResolver)(settings))
} }
newDefault newDefault
} }
@ -210,7 +210,7 @@ private object IvySbt
import IvyPatternHelper._ import IvyPatternHelper._
import PatternMatcher._ import PatternMatcher._
if(!existing.contains(resolver.name)) 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)) 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) 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.*/ /** 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) = 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 paths = new IvyPaths(new File("."), None)
val conf = new InlineIvyConfiguration(paths, Seq(local), Nil, Nil, false, lock, log) val conf = new InlineIvyConfiguration(paths, Seq(local), Nil, Nil, false, lock, log)
(new IvySbt(conf), local) (new IvySbt(conf), local)

View File

@ -174,7 +174,7 @@ object Resolver
* If `scalaTools` is true, add the Scala Tools releases repository. * If `scalaTools` is true, add the Scala Tools releases repository.
* If `mavenCentral` is true, add the Maven Central repository. */ * If `mavenCentral` is true, add the Maven Central repository. */
def withDefaultResolvers(userResolvers: Seq[Resolver], mavenCentral: Boolean, scalaTools: Boolean): Seq[Resolver] = def withDefaultResolvers(userResolvers: Seq[Resolver], mavenCentral: Boolean, scalaTools: Boolean): Seq[Resolver] =
Seq(Resolver.defaultLocal(None)) ++ Seq(Resolver.defaultLocal) ++
userResolvers ++ userResolvers ++
single(DefaultMavenRepository, mavenCentral)++ single(DefaultMavenRepository, mavenCentral)++
single(ScalaToolsReleases, scalaTools) single(ScalaToolsReleases, scalaTools)
@ -270,14 +270,13 @@ object Resolver
def mavenStyleBasePattern = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" def mavenStyleBasePattern = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
def localBasePattern = "[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]" def localBasePattern = "[organisation]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]"
def userRoot = System.getProperty("user.home") def defaultLocal = defaultUserFileRepository("local")
def userMavenRoot = userRoot + "/.m2/repository/" def defaultShared = defaultUserFileRepository("shared")
def userIvyRoot = userRoot + "/.ivy2/" def defaultUserFileRepository(id: String) =
private def userIvyRootFile = new File(userIvyRoot) {
val pList = ("${ivy.home}/" + id + "/" + localBasePattern) :: Nil
def defaultLocal(ivyHome: Option[File]) = defaultUserFileRepository(ivyHome, "local") FileRepository(id, defaultFileConfiguration, Patterns(pList, pList, false))
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 defaultIvyPatterns = def defaultIvyPatterns =
{ {
val pList = List(localBasePattern) val pList = List(localBasePattern)