aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-03-17 03:09:07 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2017-03-17 03:09:07 -0400
commitebf93c0807053bf2408456e893e5e26afd805f0e (patch)
tree8018dfd7c5dbaf848cf6d5ac9a33688f527b8526 /stage1
parentb9c20082bcbd231eb67c3ded0d3fe6674c8c55b7 (diff)
downloadcbt-ebf93c0807053bf2408456e893e5e26afd805f0e.tar.gz
cbt-ebf93c0807053bf2408456e893e5e26afd805f0e.tar.bz2
cbt-ebf93c0807053bf2408456e893e5e26afd805f0e.zip
Replace dependencies feature for conflict resolution
Diffstat (limited to 'stage1')
-rw-r--r--stage1/Stage1Lib.scala4
-rw-r--r--stage1/resolver.scala68
2 files changed, 38 insertions, 34 deletions
diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala
index 1cda9fd..83febe8 100644
--- a/stage1/Stage1Lib.scala
+++ b/stage1/Stage1Lib.scala
@@ -239,7 +239,7 @@ class Stage1Lib( logger: Logger ) extends BaseLib{
zincDeps
.collect{ case d @
BoundMavenDependency(
- _, _, MavenDependency( "com.typesafe.sbt", "sbt-interface", _, Classifier.none, _), _
+ _, _, MavenDependency( "com.typesafe.sbt", "sbt-interface", _, Classifier.none, _), _, _
) => d
}
.headOption
@@ -250,7 +250,7 @@ class Stage1Lib( logger: Logger ) extends BaseLib{
zincDeps
.collect{ case d @
BoundMavenDependency(
- _, _, MavenDependency( "com.typesafe.sbt", "compiler-interface", _, Classifier.sources, _), _
+ _, _, MavenDependency( "com.typesafe.sbt", "compiler-interface", _, Classifier.sources, _), _, _
) => d
}
.headOption
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)