diff options
Diffstat (limited to 'stage1')
-rw-r--r-- | stage1/Stage1Lib.scala | 4 | ||||
-rw-r--r-- | stage1/resolver.scala | 68 |
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) |