ReflectionsException: No se pudo obtener el tipo de nombre org.gradle.api.Plugin

smart-panda:

He implementado la costumbre Gradle plugin y funciona, pero durante la construcción Gradle tengo un ReflectionsException: Could not get the type for name org.gradle.api.Pluginescaneo debido a las reverberaciones. ¿Por qué cargador de clases no ve el tipo?

Caused by: java.lang.ClassNotFoundException: org.gradle.api.Plugin
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.reflections.ReflectionUtils.forName(ReflectionUtils.java:388)

El plug-in implementa la costumbre Plugin<Project>, como a continuación:

//CommonGradlePlugin
import org.gradle.api.Plugin;
import org.gradle.api.Project; 

public class CommonGradlePlugin implements Plugin<Project> {
    //...
}
oleksP:

¿Por qué cargador de clases no ve el tipo?

Supongo que las clases Gradle no están incluidos en la ruta de clase de compilación / ejecución, simplemente porque es una herramienta de construcción. Es por eso que las clases Gradle no pueden ser encontrados por las reflexiones.

Puede excluir paquete con el plugin Gradle usando ConfigurationBuilder de Reflexión:

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
FilterBuilder filterBuilder = new FilterBuilder();

configurationBuilder.addUrls(ClasspathHelper.forPackage(PACKAGE_TO_SCAN));
filterBuilder
        .includePackage(PACKAGE_TO_SCAN)
        .excludePackage(PACKAGE_TO_EXCLUDE);
configurationBuilder.filterInputsBy(filterBuilder);

Reflections reflections = new Reflections(configurationBuilder);

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=191524&siteId=1
Recomendado
Clasificación