0

次のようなカスタム 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

どんな助けでも大歓迎です!ありがとうございました!

乾杯、キエルド

4

1 に答える 1