diff options
-rw-r--r-- | stage1/classloader.scala | 4 | ||||
-rw-r--r-- | stage1/resolver.scala | 9 |
2 files changed, 6 insertions, 7 deletions
diff --git a/stage1/classloader.scala b/stage1/classloader.scala index 3293dd1..50e33a2 100644 --- a/stage1/classloader.scala +++ b/stage1/classloader.scala @@ -8,7 +8,7 @@ import scala.collection.immutable.Seq object ClassLoaderCache{ private val cache = NailgunLauncher.classLoaderCache - def classLoader( classpath: ClassPath, parent: ClassLoader )(implicit logger: Logger): ClassLoader + def get( classpath: ClassPath )(implicit logger: Logger): ClassLoader = cache.synchronized{ val lib = new Stage1Lib(logger) val key = classpath.strings.sorted.mkString(":") @@ -17,7 +17,7 @@ object ClassLoaderCache{ cache.get(key) } else { logger.resolver("CACHE MISS: "++key) - val cl = new cbt.URLClassLoader( classpath, parent ) + val cl = new cbt.URLClassLoader( classpath, ClassLoader.getSystemClassLoader ) cache.put( key, cl ) cl } diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 9b3276b..fae5e9d 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -45,21 +45,20 @@ abstract class Dependency{ _.right.toOption.map(_.exportedClasspath) ) ) - val mavenClassPath = ClassPath.flatten( + val cachedClassPath = ClassPath.flatten( transitiveClassPath.flatMap( _.left.toOption ).par.map(_.exportedClasspath).seq.sortBy(_.string) ) + if(cacheDependencyClassLoader){ new URLClassLoader( exportedClasspath ++ buildClassPath, - ClassLoaderCache.classLoader( - mavenClassPath, new URLClassLoader( mavenClassPath, ClassLoader.getSystemClassLoader ) - ) + ClassLoaderCache.get( cachedClassPath ) ) } else { new URLClassLoader( - exportedClasspath ++ buildClassPath ++ mavenClassPath, ClassLoader.getSystemClassLoader + exportedClasspath ++ buildClassPath ++ cachedClassPath, ClassLoader.getSystemClassLoader ) } } |