Clone
Rodrigo B. de Oliveira
committed
on 13 Jul 16
Use isolated ClassLoader for Kotlin jars
Due to the lack of isolation between gradle-script-kotlin and the
compiled buildscript(s), referenc… Show more
Use isolated ClassLoader for Kotlin jars

Due to the lack of isolation between gradle-script-kotlin and the

compiled buildscript(s), referenced Kotlin types could leak into

different ClassLoader scopes causing all sorts of loader constraint

violations. That lack of isolation also meant that only the specific

version of Kotlin shipped with gsk could ever be used.

This commit mitigates these limitations by subverting the ClassLoader

delegation model when Kotlin jars are detected in the buildscript

classpath. In that case, all jars in the script classpath together with

the Kotlin jars are segregated into a ClassLoader that will first try to

load classes locally before delegating to its parent from the

ClassLoader scope hierarchy.

This solution is only a stepping stone and comes with its own set of

limitations, buildscript block and script body cannot exchange Kotlin

library values for one. A better solution will demand more isolation

between gradle-script-kotlin and core.

Resolves #84

Resolves #86

Resolves #25

Show less

master + 425 more