次のようなカスタム 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 の execute メソッドでは、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 に依存する 5 つの結果が得られます。それで大丈夫です。ただし、別のプラグイン (cds4j-maven-plugin) を使用していくつかの実装も生成しました。
<phase>generate-sources</phase>
そして、上記のプラグインがソースを生成した後に実行されるように、カスタム プラグインのフェーズを prepare-package に設定しようとしました。ただし、前に述べた 5 つ以上の結果は得られません。これらの生成されたインターフェイスも表示されることを期待しています。
これは、クラス パスまたはクラス ローダーの問題でしょうか? それともフェーズでしょうか?
また、生成されたクラスのパッケージを Reflections コンストラクターに配置しようとしました。また、8 行目で説明されているように、Reflections クラスの読み込みを構成しようとしました: https://www.hellojava.com/a/80798.html
どんな助けでも大歓迎です!ありがとうございました!
乾杯、キエルド