2016-05-18 11 views
2

コンパイル時に実行するプラグインを作成しました。他のJavaクラスで使用されているソースコードを生成します。コンパイラプラグインの前にカスタムMavenプラグインを呼び出す

通常、私のPOMにこのプラグインを追加すると、Mavenが最初にコンパイラプラグインを実行してからプラグインを実行するため、コンパイルエラーが発生します。だから、コンパイル中に、自分のプラグインで生成されたソースコードが必要なので失敗します。

この問題を解決するにはどうすればよいですか?

答えて

1

修正点は、ソースのコンパイル前にプラグインを起動することです。 maven-compiler-plugin:compileによって行われるようなコンパイルは、default lifecyclecompileフェーズでデフォルトで行われます。

その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ゴールを使用して、ソースが生成されたディレクトリをビルドパスに追加できます。

関連する問題