aboutsummaryrefslogtreecommitdiff
path: root/stage1/resolver.scala
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2017-06-22 01:19:42 -0400
committerGitHub <noreply@github.com>2017-06-22 01:19:42 -0400
commit3307c0d0ec54b7d87e83596572da2853328ed009 (patch)
tree1f39f2f458a532425f7c1ae401e57f247170b448 /stage1/resolver.scala
parent96d01f08f8c8f097a7b391a92acd63f6295f43d6 (diff)
parent2c3db4e1ed46059736440e494fe400dcb2f50e9f (diff)
downloadcbt-3307c0d0ec54b7d87e83596572da2853328ed009.tar.gz
cbt-3307c0d0ec54b7d87e83596572da2853328ed009.tar.bz2
cbt-3307c0d0ec54b7d87e83596572da2853328ed009.zip
Merge pull request #535 from cvogt/version-ranges
add basic support for maven version ranges
Diffstat (limited to 'stage1/resolver.scala')
-rw-r--r--stage1/resolver.scala15
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