From b212d80ac67a55a2b0d4b3e1ac742576ccd8a95a Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Wed, 16 Jan 2013 10:26:33 -0500 Subject: [PATCH] Ivy Artifact needs wildcard configuration added if no explicit ones are defined. Fixes #439. --- ivy/src/main/scala/sbt/Ivy.scala | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/ivy/src/main/scala/sbt/Ivy.scala b/ivy/src/main/scala/sbt/Ivy.scala index 9260f3ed1..e4e3f26c5 100644 --- a/ivy/src/main/scala/sbt/Ivy.scala +++ b/ivy/src/main/scala/sbt/Ivy.scala @@ -420,7 +420,7 @@ private object IvySbt private def toIvyArtifact(moduleID: ModuleDescriptor, a: Artifact, configurations: Iterable[String]): MDArtifact = { val artifact = new MDArtifact(moduleID, a.name, a.`type`, a.extension, null, extra(a, false)) - configurations.foreach(artifact.addConfiguration) + copyConfigurations(a, artifact.addConfiguration) artifact } def getExtraAttributes(revID: ExtendableItem): Map[String,String] = @@ -563,6 +563,7 @@ private object IvySbt import artifact.{name, classifier, `type`, extension, url} val extraMap = extra(artifact) val ivyArtifact = new DefaultDependencyArtifactDescriptor(dependencyDescriptor, name, `type`, extension, url.getOrElse(null), extraMap) + copyConfigurations(artifact, ivyArtifact.addConfiguration) for(conf <- dependencyDescriptor.getModuleConfigurations) dependencyDescriptor.addDependencyArtifact(conf, ivyArtifact) } @@ -575,6 +576,11 @@ private object IvySbt } dependencyDescriptor } + def copyConfigurations(artifact: Artifact, addConfiguration: String => Unit): Unit = + if(artifact.configurations.isEmpty) + addConfiguration("*") + else + artifact.configurations.foreach(c => addConfiguration(c.name)) def addOverrides(moduleID: DefaultModuleDescriptor, overrides: Set[ModuleID], matcher: PatternMatcher): Unit = overrides foreach addOverride(moduleID, matcher) @@ -601,8 +607,9 @@ private object IvySbt /** This method is used to add inline artifacts to the provided module. */ def addArtifacts(moduleID: DefaultModuleDescriptor, artifacts: Iterable[Artifact]): Unit = - for(art <- mapArtifacts(moduleID, artifacts.toSeq); c <- art.getConfigurations) + for(art <- mapArtifacts(moduleID, artifacts.toSeq); c <- art.getConfigurations if c != "*") moduleID.addArtifact(c, art) + def addConfigurations(mod: DefaultModuleDescriptor, configurations: Iterable[Configuration]): Unit = configurations.foreach(config => mod.addConfiguration(toIvyConfiguration(config)))