diff --git a/ivy/MakePom.scala b/ivy/MakePom.scala index 262a1ee35..b85334e97 100644 --- a/ivy/MakePom.scala +++ b/ivy/MakePom.scala @@ -132,6 +132,7 @@ class MakePom(val log: Logger) {mrid.getName} {mrid.getRevision} { scopeAndOptional(dependency) } + { classifier(dependency) } { val (warns, excls) = List.separate(excl.map(makeExclusion)) if(!warns.isEmpty) log.warn(warns.mkString(IO.Newline)) @@ -144,6 +145,13 @@ class MakePom(val log: Logger) } + def classifier(dependency: DependencyDescriptor): Seq[scala.xml.Node] = + { + for (da <- dependency.getAllDependencyArtifacts; + cl <- Option(da.getExtraAttribute("classifier"))) yield + {cl} + } + def scopeAndOptional(dependency: DependencyDescriptor): NodeSeq = { val (scope, opt) = getScopeAndOptional(dependency.getModuleConfigurations) @@ -238,4 +246,4 @@ class MakePom(val log: Logger) } module.getDependencies flatMap translate } -} \ No newline at end of file +} diff --git a/sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala b/sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala index a8a1a9404..1f1e12bf0 100644 --- a/sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala +++ b/sbt/src/sbt-test/dependency-management/pom-scope/project/PomTest.scala @@ -13,7 +13,7 @@ object PomTest extends Build "d" % "d" % "1.0" % "test", "e" % "e" % "1.0" % "custom", "f" % "f" % "1.0" % "custom,optional,runtime", - "g" % "g" % "1.0" % "custom,runtime" + "g" % "g" % "1.0" % "custom,runtime" classifier "foo" ) ) @@ -21,17 +21,17 @@ object PomTest extends Build def checkPom = makePom map { pom => val expected = Seq( - ("a", Some("compile"), false), - ("b", Some("runtime"), true), - ("c", None, true), - ("d", Some("test"), false), - ("e", Some("custom"), false), - ("f", Some("runtime"), true), - ("g", Some("runtime"), false) + ("a", Some("compile"), false, None), + ("b", Some("runtime"), true, None), + ("c", None, true, None), + ("d", Some("test"), false, None), + ("e", Some("custom"), false, None), + ("f", Some("runtime"), true, None), + ("g", Some("runtime"), false, Some("foo")) ) val loaded = xml.XML.loadFile(pom) val deps = loaded \\ "dependency" - expected foreach { case (id, scope, opt) => + expected foreach { case (id, scope, opt, classifier) => val dep = deps.find(d => (d \ "artifactId").text == id).getOrElse( error("Dependency '" + id + "' not written to pom:\n" + loaded)) val actualOpt = java.lang.Boolean.parseBoolean( (dep \\ "optional").text ) @@ -39,7 +39,9 @@ object PomTest extends Build assert(opt == actualOpt, "Invalid 'optional' section '" + (dep \\ "optional") + "', expected optional=" + opt) val actualScope = (dep \\ "scope") match { case Seq() => None; case x => Some(x.text) } + val acutalClassifier = (dep \\ "classifier") match { case Seq() => None; case x => Some(x.text) } assert(actualScope == scope, "Invalid 'scope' section '" + (dep \\ "scope") + "', expected scope=" + scope) + assert(acutalClassifier == classifier, "Invalid 'classifier' section '" + (dep \\ "classifier") + "', expected classifier=" + classifier) } } -} \ No newline at end of file +}