コンパイル時に実行するプラグインを作成しました。他のJavaクラスで使用されているソースコードを生成します。コンパイラプラグインの前にカスタムMavenプラグインを呼び出す
通常、私のPOMにこのプラグインを追加すると、Mavenが最初にコンパイラプラグインを実行してからプラグインを実行するため、コンパイルエラーが発生します。だから、コンパイル中に、自分のプラグインで生成されたソースコードが必要なので失敗します。
この問題を解決するにはどうすればよいですか?
コンパイル時に実行するプラグインを作成しました。他のJavaクラスで使用されているソースコードを生成します。コンパイラプラグインの前にカスタムMavenプラグインを呼び出す
通常、私のPOMにこのプラグインを追加すると、Mavenが最初にコンパイラプラグインを実行してからプラグインを実行するため、コンパイルエラーが発生します。だから、コンパイル中に、自分のプラグインで生成されたソースコードが必要なので失敗します。
この問題を解決するにはどうすればよいですか?
修正点は、ソースのコンパイル前にプラグインを起動することです。 maven-compiler-plugin:compile
によって行われるようなコンパイルは、default lifecycleのcompile
フェーズでデフォルトで行われます。
そのcompile
相は、デフォルトのライフサイクルもgenerate-sources
を呼び出す前に、which purpose isに:
コンピレーションに含めるための任意のソースコードを生成します。
したがって、プラグインをcompile
フェーズの代わりにgenerate-sources
フェーズにバインドする必要があります。これは
@Mojo(name = "example", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
またはその実行中POMで明示的に宣言すると、あなたのMOJOのdefaultPhase
属性を使用して行うことができ、次のいずれか
<execution>
<phase>generate-sources</phase>
<!-- id, goal and configuration -->
</execution>
あなたがクラスを確認する必要がありますその段階で生成されたものがビルドパスに正しく追加されます。プラグインがすでに(MavenProject.addCompileSourceRoot(directory)
を呼び出して)プラグインを実行していない場合は、build-helper-maven-plugin:add-source
ゴールを使用して、ソースが生成されたディレクトリをビルドパスに追加できます。