我创建了一个自定义 Maven 插件,如下所示:
@Mojo(name="generate", defaultPhase = LifecyclePhase.PREPARE_PACKAGE)
public class HandlerGeneratorMojo extends AbstractMojo {
...
}
我正在这样使用它:
<!-- GENERATE EVENT HANDLERS (POC) -->
<plugin>
<artifactId>handler-generator-maven-plugin</artifactId>
<groupId>my.group.id</groupId>
<version>${revision}</version>
<executions>
<execution>
<id>generate handlers</id>
<phase>prepare-package</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
...
</configuration>
</execution>
</executions>
</plugin>
在 Mojo 的执行方法中,我尝试使用 Reflections api 检索扩展接口 CdsData 的所有接口。
final Reflections reflections = new Reflections();
final Set<Class<? extends CdsData>> allClasses =
reflections.getSubTypesOf(CdsData.class);
log.info("Number of results: " + allClasses.size());
for (final Class<? extends CdsData> cdsDataClass: allClasses) {
log.info("Result: " + cdsDataClass);
}
我得到五个结果,它们依赖于我执行插件的 pom。所以没关系。但是,我还使用另一个已设置的插件(cds4j-maven-plugin)生成了一些实现
<phase>generate-sources</phase>
而且我试图将我的自定义插件的阶段设置为准备包,以便在上述插件生成源之后执行它。但是,我得到的结果并不比我之前提到的五个多。我也希望看到那些生成的接口。
这可能是类路径还是类加载器问题?或者可能是阶段?
我还尝试将生成的类的包放入 Reflections 构造函数中,并尝试按照第 8 行所述配置 Reflections 类加载:https ://www.hellojava.com/a/80798.html
任何帮助表示赞赏!谢谢!
干杯,凯杰德