category: Java
DATE : 2006/12/01 (Fri)
DATE : 2006/12/01 (Fri)
Maven の各フェーズには、ゴールが設定されています。
例えば、compile フェーズには compiler:compile ゴールが、package フェーズには jar:jar ゴールが標準で設定されています。
ここで以下のように pom.xml の設定を行うと、phase 要素のフェーズに goal 要素に示したゴールが実行されます。
...
<build>
<plugins>
...
<plugin>
<groupId>プラグインのgroupId</groupId>
<artifactId>プラグインのartifactId</artifactId>
<executions>
<execution>
<id>実行する処理を区別するためのID</id>
<phase>処理を実行するフェーズ名</id>
<goals>
<goal>実行するゴール</goal>
<goal>(複数記述可)</goal>
</goals>
<configuration>この処理でのプラグインの設定</configuration>
</execution>
<execution>(複数記述可)</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
特別な設定が必要ない場合、configuration 要素は省略できます。
テストコードを収めた JAR ファイルを作成する jar:test-jar ゴールを test フェーズに実行するには、次のように記述します。
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>create-test-jar</id>
<phase>test</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
goal 要素に指定しているのは「jar:test-jar」の「:」以降の部分であることに注意してください。「maven-xxx-plugin」の xxx 部分は、標準では「:」以前の部分と自動的に解釈されます。そのため、goal 要素には「:」以前の部分は書きません。
標準では、test フェーズには surefire:test ゴールが設定されています。そのため surefire:test ゴールの後に jar:test-jar ゴールが実行されます。
なお、phase 要素も省略することができます。phase 要素を省略すると、実行はそのゴールに関連付けられたフェーズで行われます。例えば、jar:test-jarのページには、次のような記述があります。
Automatically executes within the lifecycle phase: package
つまり phase 要素を省略すると、jar:test-jar ゴールは package フェーズで実行されることになります。
関連記事
参考文献
- Introduction to the Build Lifecycle
- POM Reference 3.1.1.2 Plugins
- Introduction to Plugin Prefix Resolution
PR
●この記事にコメントする
忍者ブログ [PR]
