Как я могу создать загрузчик классов из пользовательской конфигурации в gradle?


Я определил пользовательскую конфигурацию и зависимости.

repositories {
    mavenCentral()
}
configurations {
    myConfig
}
dependencies {
    myConfig   'org.foo:foo:+'
}

Как создать загрузчик классов для динамической загрузки класса?

task myTask {
    def classLoader = configurations.myConfig.????
    def foo = Class.forName( "org.foo.Foo", true, classLoader ).newInstance();
}
1 3

1 ответ:

Теперь я нашел это решение. Я надеюсь, что есть более хорошее решение.

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]) );
}