【发布时间】:2017-05-16 11:35:13
【问题描述】:
我需要编写一个 Gradle 插件,该插件将在我的应用程序中查找注释并通过反射读取标记的类。我从 Gradle 任务中调用一个方法:
private void scanAnnotatedFields() {
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
provider.addIncludeFilter(new AnnotationTypeFilter(MisEntity.class));
for (BeanDefinition beanDefinition : provider.findCandidateComponents("ru.org")) {
Class clazz = null;
try {
clazz = Class.forName(beanDefinition.getBeanClassName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println(clazz.toString());
}
}
但该方法在我的 Gradle 插件应用程序中读取类,而不是从目标应用程序中读取。我想我必须使用正确的类路径或其他东西。请帮我。谢谢。 P.S.对不起我的英语。
【问题讨论】:
-
你有例子可以试试吗?可能你只需要设置正确的类路径。
-
感谢@Opal 的回答。该示例可以从yadi.sk/d/o0_YNfZn3JFiZh 下载。有3个项目。第一个是我的申请。 Annotation 是带有注解的库。 mis-template-plugin 是插件。在 BuildLogicFunctionalTest.java 文件中有项目 1 的绝对路径。在准备示例时,我发现了一个异常 ClassNotFoundException。插件在运行时看不到 MisEntity3.class。如果您能帮助我,我将不胜感激。