diff --git a/ivy/src/main/scala/sbt/MakePom.scala b/ivy/src/main/scala/sbt/MakePom.scala index 5e49243d3..4c4b7c8d0 100644 --- a/ivy/src/main/scala/sbt/MakePom.scala +++ b/ivy/src/main/scala/sbt/MakePom.scala @@ -188,7 +188,7 @@ class MakePom(val log: Logger) {mrid.getOrganisation} {mrid.getName} - {mrid.getRevision} + {makeDependencyVersion(mrid.getRevision)} { scopeElem(scope) } { optionalElem(optional) } { classifierElem(classifier) } @@ -197,6 +197,25 @@ class MakePom(val log: Logger) } + + + def makeDependencyVersion(revision: String): String = { + if(revision endsWith "+") try { + // TODO - this is the slowest possible implementation. + val beforePlus = revision.reverse.dropWhile(_ != '.').drop(1).reverse + val lastVersion = beforePlus.reverse.takeWhile(_ != '.').reverse + val lastVersionInt = lastVersion.toInt + val prefixVersion = beforePlus.reverse.dropWhile(_ != '.').drop(1).reverse + s"[$beforePlus, ${prefixVersion}.${lastVersionInt+1})" + } catch { + case e: NumberFormatException => + // TODO - if the version deosn't meet our expectations, maybe we just issue a hard + // error instead of softly ignoring the attempt to rewrite. + //sys.error(s"Could not fix version [$revision] into maven style version") + revision + } else revision + } + @deprecated("No longer used and will be removed.", "0.12.1") def classifier(dependency: DependencyDescriptor, includeTypes: Set[String]): NodeSeq = { diff --git a/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala b/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala index 342c4cf42..3f5f893fa 100644 --- a/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala +++ b/sbt/src/sbt-test/dependency-management/make-pom/project/MakePomTest.scala @@ -40,7 +40,7 @@ object MakePomTest extends Build for { dep <- pomXml \ "dependencies" \ "dependency" if (dep \ "artifactId").text == "jsr305" - if (dep \ "version").text contains "+" + if (dep \ "version").text != "[1.3, 1.4)" } sys.error(s"Found dependency with invalid maven version: $dep") () }