diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2017-03-17 03:09:07 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-03-17 03:09:07 -0400 |
commit | ebf93c0807053bf2408456e893e5e26afd805f0e (patch) | |
tree | 8018dfd7c5dbaf848cf6d5ac9a33688f527b8526 /stage1/resolver.scala | |
parent | b9c20082bcbd231eb67c3ded0d3fe6674c8c55b7 (diff) | |
download | cbt-ebf93c0807053bf2408456e893e5e26afd805f0e.tar.gz cbt-ebf93c0807053bf2408456e893e5e26afd805f0e.tar.bz2 cbt-ebf93c0807053bf2408456e893e5e26afd805f0e.zip |
Replace dependencies feature for conflict resolution
Diffstat (limited to 'stage1/resolver.scala')
-rw-r--r-- | stage1/resolver.scala | 68 |
1 files changed, 36 insertions, 32 deletions
diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 1d539a2..105177e 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -220,7 +220,8 @@ object MavenDependency{ } // FIXME: take MavenResolver instead of mavenCache and repositories separately case class BoundMavenDependency( - cbtLastModified: Long, mavenCache: File, mavenDependency: MavenDependency, repositories: Seq[URL] + cbtLastModified: Long, mavenCache: File, mavenDependency: MavenDependency, repositories: Seq[URL], + replace: MavenDependency => Seq[MavenDependency] => Seq[MavenDependency] = _ => (identity _) )( implicit val logger: Logger, val transientCache: java.util.Map[AnyRef,AnyRef], val classLoaderCache: ClassLoaderCache ) extends ArtifactInfo with DependencyImplementation{ @@ -302,8 +303,9 @@ case class BoundMavenDependency( (parent \ "artifactId").text, (parent \ "version").text ), - repositories - ) + repositories, + replace + )(logger, transientCache, classLoaderCache) }.flatMap(_.transitivePom) :+ this } @@ -330,37 +332,39 @@ case class BoundMavenDependency( ).toMap def dependencies: Seq[BoundMavenDependency] = { - if(classifier == Classifier.sources) Seq() - else { - lib.cacheOnDisk( + replace(mavenDependency)( + if(classifier == Classifier.sources) Seq() + else { + lib.cacheOnDisk( cbtLastModified, mavenCache ++ basePath(true) ++ ".pom.dependencies" - )( MavenDependency.deserialize )( _.serialize ){ - (pomXml \ "dependencies" \ "dependency").collect{ + )( MavenDependency.deserialize )( _.serialize ){ + (pomXml \ "dependencies" \ "dependency").collect{ case xml if ( (xml \ "scope").text == "" || (xml \ "scope").text == "compile" ) && (xml \ "optional").text != "true" => - val artifactId = lookup(xml,_ \ "artifactId").get - val groupId = - lookup(xml,_ \ "groupId").getOrElse( - dependencyVersions - .get(artifactId).map(_._1) - .getOrElse( - throw new Exception(s"$artifactId not found in \n$dependencyVersions") - ) - ) - val version = - lookup(xml,_ \ "version").getOrElse( - dependencyVersions - .get(artifactId).map(_._2) - .getOrElse( - throw new Exception(s"$artifactId not found in \n$dependencyVersions") - ) - ) - val classifier = Classifier( Some( (xml \ "classifier").text ).filterNot(_ == "").filterNot(_ == null) ) - MavenDependency( groupId, artifactId, version, classifier ) - }.toVector - }.map( - BoundMavenDependency( cbtLastModified, mavenCache, _, repositories ) - ).to - } + val artifactId = lookup(xml,_ \ "artifactId").get + val groupId = + lookup(xml,_ \ "groupId").getOrElse( + dependencyVersions + .get(artifactId).map(_._1) + .getOrElse( + throw new Exception(s"$artifactId not found in \n$dependencyVersions") + ) + ) + val version = + lookup(xml,_ \ "version").getOrElse( + dependencyVersions + .get(artifactId).map(_._2) + .getOrElse( + throw new Exception(s"$artifactId not found in \n$dependencyVersions") + ) + ) + val classifier = Classifier( Some( (xml \ "classifier").text ).filterNot(_ == "").filterNot(_ == null) ) + MavenDependency( groupId, artifactId, version, classifier ) + }.toVector + } + } + ).map( + BoundMavenDependency( cbtLastModified, mavenCache, _, repositories, replace ) + ).to } def lookup( xml: Node, accessor: Node => NodeSeq ): Option[String] = { // println("lookup in " + xml) |