私はMavenプラグイン(Mojo)を書いています。これは、他のプラグイン実行の標準セットを実行する必要があります。Mavenプラグインを実行する前に目標を実行するにはどうすればよいですか?
私のプラグイン内のすべての目標を宣言するメカニズムがありますので、POMでそれらをすべて定義しているユーザーに頼る必要はありませんか?
私はMavenプラグイン(Mojo)を書いています。これは、他のプラグイン実行の標準セットを実行する必要があります。Mavenプラグインを実行する前に目標を実行するにはどうすればよいですか?
私のプラグイン内のすべての目標を宣言するメカニズムがありますので、POMでそれらをすべて定義しているユーザーに頼る必要はありませんか?
これは、カスタムライフサイクルを定義し、execute
アノテーションを使用してMojoを実行する前にそのライフサイクルを呼び出すことで実行できます。あなたのモジョで
、実行するのJavadocでライフサイクルを宣言する:
/**
* Invoke the custom lifecycle before executing this goal.
*
* @goal my-goal
* @execute lifecycle="my-custom-lifecycle" phase="process-resources"
*/
public class MyMojo extends AbstractMojo {
...
その後のsrc /メイン/リソース/ META-INF/Mavenの/ lifecycle.xmlにカスタムライフサイクルを定義します。
ライフサイクルはplexusのcomponents.xmlと少し似ていますが、これらの目標の設定を指定することができます。
構文はpomのプラグイン構成と少し異なります。別のgroupId、artifactId、version要素を指定するのではなく、:をセパレータとして使用して目標を定義します。それ以外の場合は、pomのプラグイン構成の実行要素とほとんど同じです。 lifecycle.xmlでいくつかのプロパティを使用することもできます(ただし、すべてのプロパティがサポートされているとは限りませんが、確認する必要があります)。
次の例では、プロセスリソースの位相の異なる構成で二回依存プラグインを呼び出す:
<lifecycles>
<lifecycle>
<id>download-dependencies</id>
<phases>
<phase>
<id>process-resources</id>
<executions>
<execution>
<goals>
<goal>
org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies
</goal>
</goals>
<configuration>
<includeScope>compile</includeScope>
<includeTypes>war</includeTypes>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.outputDirectory}/wars
</outputDirectory>
</configuration>
</execution>
<execution>
<goals>
<goal>
org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies
</goal>
</goals>
<configuration>
<includeScope>compile</includeScope>
<includeTypes>jar</includeTypes>
<overWrite>true</overWrite>
<outputDirectory>
${project.build.outputDirectory}/jars
</outputDirectory>
</configuration>
</execution>
</executions>
</phase>
</phases>
</lifecycle>
</lifecycles>
このアプローチでは、依存プラグインは、フォークのprocess-resources
位相に各構成で一度呼び出されますライフサイクル(すべてMojoで定義された実行内で発生します)。
lifecycle.xmlでは、ライフサイクルの複数のフェーズと複数の実行を定義できます。使用可能なフェーズはMaven lifecycleで定義されています。
ライフサイクルの詳細については、MavenブックのCreating a Custom Lifecycleセクションを参照してください。それは許可されているものの網羅的なリストを与えるものではありません。私が知っている唯一の他のリファレンスは、Maven 2 alphaであるため、最新のものではない可能性があります。
これはうまくいくはずです。 lifecycle.xmlでどのようなコンテンツが許可されているかわかりますか? –
私は答えの最後にいくつかの参照を追加しました。私は標準的なリファレンスを知らないのですが、 –
MavenのLifecycle.xmlリファレンスはこちら[http://maven.apache.org/ref/2.2.1/maven-plugin-descriptor/lifecycle-mappings.html]にあります。この例よりもはるかに多くの情報はありません。 – prunge