diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2017-06-22 00:19:08 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-06-22 00:38:08 -0400 |
commit | 2c3db4e1ed46059736440e494fe400dcb2f50e9f (patch) | |
tree | a6dc6b035b909a0efc8662d1a4c2a1b9d2921ce7 /stage1 | |
parent | 422e993664a76e42268eaecfdad623a92d34777a (diff) | |
download | cbt-2c3db4e1ed46059736440e494fe400dcb2f50e9f.tar.gz cbt-2c3db4e1ed46059736440e494fe400dcb2f50e9f.tar.bz2 cbt-2c3db4e1ed46059736440e494fe400dcb2f50e9f.zip |
add basic support for maven version ranges
Diffstat (limited to 'stage1')
-rw-r--r-- | stage1/resolver.scala | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 13d4070..0da8f6f 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -268,7 +268,10 @@ case class BoundMavenDependency( classpath.strings.map(new File(_).lastModified).max } - private lazy val base = "/" + groupId.split("\\.").mkString("/") + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + private lazy val base = { + val v = BoundMavenDependency.extractVersion(version) + "/" + groupId.split("\\.").mkString("/") + "/" + artifactId + "/" + v + "/" + artifactId + "-" + v + } protected[cbt] def basePath(useClassifier: Boolean) = // PERFORMANCE HOTSPOT base + (if (useClassifier && classifier.name.nonEmpty) "-" + classifier.name.get else "") @@ -421,6 +424,16 @@ case class BoundMavenDependency( } } object BoundMavenDependency{ + private lazy val versionRangeRegex = "^[\\[\\(]([^,\\]\\)]*)(,([^\\]\\)]*))?[\\]\\)]".r + def extractVersion( versionOrRange: String ) = { + versionOrRange match { + case versionRangeRegex(left,middle,right) if left != null || right != null => { + Option(left).filterNot(_ == "") getOrElse right + } + case version => version + } + } + val ValidIdentifier = "^([A-Za-z0-9_\\-.]+)$".r // according to maven's DefaultModelValidator.java def semanticVersionLessThan(left: Array[Either[Int,String]], right: Array[Either[Int,String]]) = { // FIXME: this ignores ends when different size |