aboutsummaryrefslogtreecommitdiff
path: root/stage1/resolver.scala
diff options
context:
space:
mode:
Diffstat (limited to 'stage1/resolver.scala')
-rw-r--r--stage1/resolver.scala38
1 files changed, 22 insertions, 16 deletions
diff --git a/stage1/resolver.scala b/stage1/resolver.scala
index fae5e9d..30f03e2 100644
--- a/stage1/resolver.scala
+++ b/stage1/resolver.scala
@@ -32,12 +32,13 @@ abstract class Dependency{
def exportedJars: Seq[File]
def jars: Seq[File] = exportedJars ++ dependencyJars
+ def canBeCached = false
def cacheDependencyClassLoader = true
private object cacheClassLoaderBasicBuild extends Cache[URLClassLoader]
def classLoader: URLClassLoader = cacheClassLoaderBasicBuild{
val transitiveClassPath = transitiveDependencies.map{
- case d: MavenDependency => Left(d)
+ case d if d.canBeCached => Left(d)
case d => Right(d)
}
val buildClassPath = ClassPath.flatten(
@@ -95,35 +96,39 @@ abstract class Dependency{
}
// TODO: all this hard codes the scala version, needs more flexibility
-class ScalaCompiler(logger: Logger) extends MavenDependency("org.scala-lang","scala-compiler",constants.scalaVersion)(logger)
-class ScalaLibrary(logger: Logger) extends MavenDependency("org.scala-lang","scala-library",constants.scalaVersion)(logger)
-class ScalaReflect(logger: Logger) extends MavenDependency("org.scala-lang","scala-reflect",constants.scalaVersion)(logger)
+class ScalaCompilerDependency(version: String)(implicit logger: Logger) extends MavenDependency("org.scala-lang","scala-compiler",version)
+class ScalaLibraryDependency (version: String)(implicit logger: Logger) extends MavenDependency("org.scala-lang","scala-library",version)
+class ScalaReflectDependency (version: String)(implicit logger: Logger) extends MavenDependency("org.scala-lang","scala-reflect",version)
-case class ScalaDependencies(logger: Logger) extends Dependency{
+case class ScalaDependencies(version: String)(implicit val logger: Logger) extends Dependency{ sd =>
+ final val updated = false
+ override def canBeCached = true
def exportedClasspath = ClassPath(Seq())
def exportedJars = Seq[File]()
- def dependencies = Seq( new ScalaCompiler(logger), new ScalaLibrary(logger), new ScalaReflect(logger) )
- final val updated = false
+ def dependencies = Seq(
+ new ScalaCompilerDependency(version)(logger),
+ new ScalaLibraryDependency(version)(logger),
+ new ScalaReflectDependency(version)(logger)
+ )
}
-/*
-case class BinaryDependency( path: File, dependencies: Seq[Dependency] ) extends Dependency{
+case class BinaryDependency( path: File, dependencies: Seq[Dependency] )(implicit val logger: Logger) extends Dependency{
+ def updated = false
def exportedClasspath = ClassPath(Seq(path))
- def exportedJars = Seq[File]()
+ def exportedJars = Seq[File](path)
}
-*/
-case class Stage1Dependency(logger: Logger) extends Dependency{
+case class Stage1Dependency()(implicit val logger: Logger) extends Dependency{
def exportedClasspath = ClassPath( Seq(nailgunTarget, stage1Target) )
def exportedJars = Seq[File]()
- def dependencies = ScalaDependencies(logger: Logger).dependencies
+ def dependencies = ScalaDependencies(constants.scalaVersion).dependencies
def updated = false // FIXME: think this through, might allow simplifications and/or optimizations
}
-case class CbtDependency(logger: Logger) extends Dependency{
+case class CbtDependency()(implicit val logger: Logger) extends Dependency{
def exportedClasspath = ClassPath( Seq( stage2Target ) )
def exportedJars = Seq[File]()
override def dependencies = Seq(
- Stage1Dependency(logger),
+ Stage1Dependency()(logger),
MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0")(logger),
MavenDependency("com.lihaoyi","ammonite-repl_2.11.7","0.5.5")(logger),
MavenDependency("org.scala-lang.modules","scala-xml_2.11","1.0.5")(logger)
@@ -136,10 +141,11 @@ final case class Classifier(name: String) extends ClassifierBase
case object javadoc extends ClassifierBase
case object sources extends ClassifierBase
-case class MavenDependency( groupId: String, artifactId: String, version: String, sources: Boolean = false )(val logger: Logger)
+case class MavenDependency( groupId: String, artifactId: String, version: String, sources: Boolean = false )(implicit val logger: Logger)
extends ArtifactInfo{
def updated = false
+ override def canBeCached = true
private val groupPath = groupId.split("\\.").mkString("/")
def basePath = s"/$groupPath/$artifactId/$version/$artifactId-$version"++(if(sources) "-sources" else "")