Fix regression in 0.12.3 where artifacts without an explicit configuration wouldn't be listed in ivy.xml.

This commit is contained in:
Mark Harrah 2013-06-04 10:33:23 -04:00
parent e83038bed4
commit 268ae565f6
5 changed files with 27 additions and 22 deletions

View File

@ -437,10 +437,10 @@ private object IvySbt
}
}
private def toIvyArtifact(moduleID: ModuleDescriptor, a: Artifact, configurations: Iterable[String]): MDArtifact =
private def toIvyArtifact(moduleID: ModuleDescriptor, a: Artifact, allConfigurations: Iterable[String]): MDArtifact =
{
val artifact = new MDArtifact(moduleID, a.name, a.`type`, a.extension, null, extra(a, false))
copyConfigurations(a, artifact.addConfiguration)
copyConfigurations(a, artifact.addConfiguration, allConfigurations)
artifact
}
def getExtraAttributes(revID: ExtendableItem): Map[String,String] =
@ -597,10 +597,13 @@ 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))
copyConfigurations(artifact, addConfiguration, "*" :: Nil)
private[this] def copyConfigurations(artifact: Artifact, addConfiguration: String => Unit, allConfigurations: Iterable[String]): Unit =
{
val confs = if(artifact.configurations.isEmpty) allConfigurations else artifact.configurations.map(_.name)
confs foreach addConfiguration
}
def addOverrides(moduleID: DefaultModuleDescriptor, overrides: Set[ModuleID], matcher: PatternMatcher): Unit =
overrides foreach addOverride(moduleID, matcher)
@ -627,7 +630,7 @@ 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 if c != "*")
for(art <- mapArtifacts(moduleID, artifacts.toSeq); c <- art.getConfigurations)
moduleID.addArtifact(c, art)
def addConfigurations(mod: DefaultModuleDescriptor, configurations: Iterable[Configuration]): Unit =
@ -637,17 +640,7 @@ private object IvySbt
{
lazy val allConfigurations = moduleID.getPublicConfigurationsNames
for(artifact <- artifacts) yield
{
val configurationStrings: Iterable[String] =
{
val artifactConfigurations = artifact.configurations
if(artifactConfigurations.isEmpty)
allConfigurations
else
artifactConfigurations.map(_.name)
}
toIvyArtifact(moduleID, artifact, configurationStrings)
}
toIvyArtifact(moduleID, artifact, allConfigurations)
}

View File

@ -0,0 +1,3 @@
public class A {
public static final int x = 3;
}

View File

@ -0,0 +1,5 @@
public final class B {
public static void main(String[] args) {
System.out.println(A.x);
}
}

View File

@ -1,7 +1,9 @@
// verifies that a can be published as an ivy.xml file and preserve the extra artifact information,
// such as a classifier
lazy val a = project.settings(common: _*).settings(
libraryDependencies := Seq("net.sf.json-lib" % "json-lib" % "2.4" classifier "jdk15" intransitive())
// verifies that a can be published as an ivy.xml file and preserve the extra artifact information,
// such as a classifier
libraryDependencies := Seq("net.sf.json-lib" % "json-lib" % "2.4" classifier "jdk15" intransitive()),
// verifies that an artifact without an explicit configuration gets published in all public configurations
artifact in (Compile,packageBin) := Artifact("demo")
)
lazy val b = project.settings(common: _*).settings(

View File

@ -1,2 +1,4 @@
> a/publish-local
> b/update
> b/update
# verify that A's artifact was published and available for B to compile/run against
> b/run