From 8ff424711c54be4a711fa649cb92917dc976eb88 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Mon, 16 Sep 2013 11:57:02 -0400 Subject: [PATCH] parse external pom.xml with CustomPomParser to handle multiple definitions. Fixes #758. This is the same issue fixed by 74c07c64a78447274be47804a6f5f5019c571dab but in this case the cause was the top-level pom.xml, which didn't go through CustomPomParser. --- ivy/src/main/scala/sbt/Ivy.scala | 2 +- .../ext-pom-classifier/build.sbt | 3 + .../ext-pom-classifier/pom.xml | 78 +++++++++++++++++++ .../ext-pom-classifier/src/test/scala/A.scala | 8 ++ .../ext-pom-classifier/test | 3 + 5 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 sbt/src/sbt-test/dependency-management/ext-pom-classifier/build.sbt create mode 100644 sbt/src/sbt-test/dependency-management/ext-pom-classifier/pom.xml create mode 100644 sbt/src/sbt-test/dependency-management/ext-pom-classifier/src/test/scala/A.scala create mode 100644 sbt/src/sbt-test/dependency-management/ext-pom-classifier/test diff --git a/ivy/src/main/scala/sbt/Ivy.scala b/ivy/src/main/scala/sbt/Ivy.scala index 51f538740..6154bdbe8 100644 --- a/ivy/src/main/scala/sbt/Ivy.scala +++ b/ivy/src/main/scala/sbt/Ivy.scala @@ -168,7 +168,7 @@ final class IvySbt(val configuration: IvyConfiguration) /** Parses the Maven pom 'pomFile' from the given `PomConfiguration`.*/ private def configurePom(pc: PomConfiguration) = { - val md = PomModuleDescriptorParser.getInstance.parseDescriptor(settings, toURL(pc.file), pc.validate) + val md = CustomPomParser.default.parseDescriptor(settings, toURL(pc.file), pc.validate) val dmd = IvySbt.toDefaultModuleDescriptor(md) IvySbt.addConfigurations(dmd, Configurations.defaultInternal) val defaultConf = Configurations.DefaultMavenConfiguration.name diff --git a/sbt/src/sbt-test/dependency-management/ext-pom-classifier/build.sbt b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/build.sbt new file mode 100644 index 000000000..273ac58dd --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/build.sbt @@ -0,0 +1,3 @@ +scalaVersion := "2.10.1" + +externalPom() diff --git a/sbt/src/sbt-test/dependency-management/ext-pom-classifier/pom.xml b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/pom.xml new file mode 100644 index 000000000..414bc70fc --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + example + example + jar + 1.0.0-SNAPSHOT + + src/main/scala + src/test/scala + + + net.alchim31.maven + scala-maven-plugin + 3.1.0 + + incremental + true + + -target:jvm-1.6 + -feature + -deprecation + -encoding + UTF-8 + + + -source + 1.6 + -Xlint:-options + -target + 1.6 + + + -Xmx768m + -Xss10m + + ${scala.version} + + + + scala-compile + + compile + testCompile + + + + + + + + + org.scala-lang + scala-library + 2.10.1 + + + org.slf4j + slf4j-api + 1.7.5 + + + org.slf4j + slf4j-api + 1.7.5 + tests + test + + + junit + junit + 4.11 + test + + + + diff --git a/sbt/src/sbt-test/dependency-management/ext-pom-classifier/src/test/scala/A.scala b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/src/test/scala/A.scala new file mode 100644 index 000000000..4cdaff43d --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/src/test/scala/A.scala @@ -0,0 +1,8 @@ +// Put in src/test/scala +object Foo { + // From main slf4j-api JAR + val logger = org.slf4j.LoggerFactory.getLogger("Foo") + // From test slf4j-api JAR + val bp = new org.slf4j.helpers.BogoPerf +} + diff --git a/sbt/src/sbt-test/dependency-management/ext-pom-classifier/test b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/test new file mode 100644 index 000000000..49047044e --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/ext-pom-classifier/test @@ -0,0 +1,3 @@ +> export compile:dependencyClasspath +> export test:dependencyClasspath +> test:compile