如何从gradle中的自定义配置创建ClassLoader?

Hor*_*ux7 4 configuration dependencies class classloader gradle

我已经定义了自定义配置和依赖项.

repositories {
    mavenCentral()
}
configurations {
    myConfig
}
dependencies {
    myConfig   'org.foo:foo:+'
}
Run Code Online (Sandbox Code Playgroud)

如何创建ClassLoader以动态加载类?

task myTask {
    def classLoader = configurations.myConfig.????
    def foo = Class.forName( "org.foo.Foo", true, classLoader ).newInstance();
}
Run Code Online (Sandbox Code Playgroud)

Hor*_*ux7 6

我现在找到了解决方案.我希望有更好的解决方案.

def classLoader = getClassLoader( configurations.myConfig )

ClassLoader getClassLoader( Configuration config ) {
    ArrayList urls = new ArrayList()
    config.files.each { File file ->
        urls += file.toURI().toURL()
    }
    return new URLClassLoader( urls.toArray(new URL[0]) );
}
Run Code Online (Sandbox Code Playgroud)