【发布时间】:2012-01-26 16:06:13
【问题描述】:
我想做的是编写一些 Maven 插件,它扫描应用程序类以查找特定接口的实现(它也可能是带有一些注释的类)并根据结果生成一些代码。我已经成功实现了在 generate-sources 阶段运行的插件,并将源代码写入 generate-sources 目录。
问题在于扫描类路径以查找带有一些注释的特定接口实现/类。 我正在使用Reflections 库通过以下方式扫描类:
private Set<Class< ? extends MyInterface >> scan(final String packageName) {
final Reflections reflections = new Reflections(packageName);
return reflections.getSubTypesOf(MyInterface.class);
}
不幸的是,此方法返回空集。当我在扩展 org.apache.maven.plugin.AbstractMojo 的类中打印我的类路径(我在其中使用 Reflections)时,我得到以下结果:
/home/pd5108/apache-maven-2.2.1/boot/classworlds-1.1.jar
我想使用反射找到的类存在于依赖 JAR 以及配置插件的模块中。查看打印出来的类路径,似乎此时(生成源阶段)在 maven 中定义的依赖项在类路径上都还不可用 - 可能它们会在下一阶段添加。真的吗?我可以使用其他方法吗?
这是类路径的打印方式:
URL[] urls = ((URLClassLoader)sysClassLoader).getURLs();
for(int i=0; i< urls.length; i++) {
System.out.println(urls[i].getFile());
}
【问题讨论】:
标签: java reflection maven-2 classpath maven-plugin