Mais conteúdo relacionado
Semelhante a Maven2 plugin (20)
Mais de Funato Takashi (7)
Maven2 plugin
- 1. Maven2 プラグイン入門
第一回チキチキ
『 ant から maven2 へ 』
〜血があつい鉄道ならばこまるよね〜
船戸 隆
tfunato@gmail.com
- 2. 自己紹介
舩戸 隆
株式会社エーティーエルシステムズ所属
日本一暑い町、岐阜県多治見市出身
Java プログラマ
id:tfunato
http://www.canetrash.jp
Twitter http://twitter.com/tfunato
2007/12/19 2
- 3. アジェンダ
Plugin とは?
Maven
どのように動いているか?
プラグインの作り方
ファーストステップ
パラメータの受け渡し
登録の方法
起動の方法
まとめ
2007/12/19 3
- 7. アーキテクチャ概要
maven-clean-plugin maven-eclipse-plugin
maven-site-plugin
MOJO
Maven plain Old Java Object
Classworlds Plexus Maven-core
Java
2007/12/19 7
- 8. 主要な使用ライブラリ
Classworlds http://classworlds.codehaus.org/
シンプルなクラスローディングライブラリ
Maven コアとプラグインのクラスローダを切り分ける
Plexus http://plexus.codehaus.org/
軽量 DI コンテナ
Maven 2の本体そのもの
コンポーネントのライフサイクルのサポート
ネストしたコンテナ
コンポーネント単位のクラスローダーの分離
2007/12/19 8
- 9. Mojo
Mojo
Maven プラグインインターフェース
M aven plain O ld J ava O bject
org.apache.maven.plugin.Mojo インターフェース
定義されてるのは
• setLog(Log log) 、 getLog() 、 void execute() だけ!
org.apache.maven.plugin.AbstractMojo
継承して Plugin を作る
void execute() を実装するだけ!
2007/12/19 9
- 10. どのように動いているか?
Maven2 の仕組み
MavenCore Mojo
Classloader
Classworlds
Mojo
Plexus
Classloader
Mojo
Plugin ごとに Classloader が別 Classloader
2007/12/19 10
- 11. BuildLifeCycle とは
BuildLifeCycle
Maven ではコアコンセプトとして
BuildLifeCycle という考えに基づいている
LifeCycle としてビルド、配布、成果物作成、
テストなどのプロセスを明確に分離して定義し
ている
その分離した単位を Phase という
Phase は Plugin のまとまり
デフォルトの Phase は
${M2_HOME}/lib/maven-core-2.0.X-uber.jar の META
2007/12/19 - INF/plexus/components.xml に定義 11
- 12. BuildLifeCycle
<configuration>
定義済み
<lifecycles>
LifeCycle <lifecycle>
<id>default</id>
<phases>
大きく分けて3つ <phase>validate</phase>
<phase>initialize</phase>
<phase>generate-sources</phase>
Default <phase>process-sources</phase>
<phase>generate-resources</phase>
<phase>process-resources</phase>
• プロジェクトのライフサイクル <phase>compile</phase>
<phase>process-classes</phase>
<phase>generate-test-sources</phase>
Clean <phase>process-test-sources</phase>
<phase>generate-test-resources</phase>
• プロジェクトのクリーン <phase>process-test-resources</phase>
<phase>test-compile</phase>
• 生成物のお掃除
<phase>process-test-classes</phase>
<phase>test</phase>
<phase>package</phase>
Site <phase>pre-integration-test</phase>
<phase>integration-test</phase>
<phase>post-integration-test</phase>
• プロジェクトのサイト作成 <phase>verify</phase>
<phase>install</phase>
• ドキュメント、レポート作成 <phase>deploy</phase>
</phases>
<configuration>
• 派生成果物
2007/12/19 12
- 13. BuildLifeCycle
定義済み Phase – Default
Phase 概略 Phase 概略
validate POM の精査 test-compile テストコードコンパイル
initialize ビルドプロセスの準備 process-test- テストコードコンパイル後処
classes 理
generate-sources ソースコード生成
test テスト実行
process-sources ソースコードの成形
package 成果物のパッケージング
generate-resources リソース生成
pre-integration-test インテグレーションテスト準
process-resources リソース成形 備
compile コンパイル integration-test インテグレーションテスト
process-classes コンパイル後処理 post-integration-test インテグレーションテスト後
処理
generate-test-sources テストコード生成
verify パッケージング後チェック
process-test-sources テストコード成形
install 成果物のインストール2.0.8
generate-test-resources テストリソース生成 Via:Maven
deploy 成果物の配備
process-test-resources テストリソース成形
2007/12/19 13
- 14. BuildLifeCycle
定義済み Phase – Clean
Phase Mojo Plugin 説明
pre-clean clean フェーズの前に実行されるフェーズ
clean clean maven-clean-plugin 生成物を削除するフェーズ
post-clean clean フェーズの後に実行されるフェーズ
2007/12/19 14
- 15. BuildLifeCycle
定義済み Phase – Site
Phase Mojo Plugin 説明
pre-site site フェーズの前に実行されるフェーズ
JavaDoc 、レポートなどを生成するフェー
site site maven-site-plugin
ズ
post-site site フェーズの後に実行されるフェーズ
site フェーズで生成されたものをデプロイ
site-deploy deploy maven-site-plugin
する
2007/12/19 15
- 17. ファーストステップ
ArchetypePlugin でプロジェクトを作る
Archetypeに maven-archetype-mojo を指定
MavenPlugin プロジェクトの雛形ができる
mvn archetype:create
-DpackageName= 任意のパッケージ
-DgroupId= 任意のグループ ID
-DartifactId=maven-sample-plugin
-DarchetypeArtifactId=maven-archetype-mojo
・すでに実装コードが用意された状態
・ artifactId の maven-#####-plugin が重要
・ <packaging>maven-plugin</packaging>
2007/12/19 17
- 18. Goal 、 Phase 指定
Goal 、 Phase の指定
Javadoc で記述
/**
* @goal sample
* @phase compile
*/
public class MyMojo
extends AbstractMojo
{
上記の例だと、ゴールは sample で compile の
フェーズで実行される
2007/12/19 18
- 19. パラメータの受け渡し
Plugin に外部からパラメータを渡す
JavaDoc で記述( Doclet と同じ)
渡す方法は3つ
起動引数としてパラメータを渡す
• -D つきでパラメータを渡す
pom.xml で定義
• <configuration> で定義
settings.xml で定義
• プロファイルのプロパティに定義
同時に定義された場合
pom.xml > settings.xml > 起動引数の順で使われる
2007/12/19 19
- 20. パラメータの設定
実際のコード例
/**
* @parameter
*/
private String param;
フィールドに @parameter を記述
例では param という名前で定義される
• POM に定義されてるもののみ設定される
• 起動時パラメータを受け取るには explession を使う
2007/12/19 20
- 22. 登録の仕方
mvn install するだけ
ローカルのリポジトリにインストールされる
${user.home}/.m2/repository
mvn install
packaging されるときに plugin.xml が作成され
る
Plugin のパラメータや goal が定義されたもの
2007/12/19 22
- 23. 起動の仕方
mvn {groupID}:{artifactID}:{version}:{goal}
このうち groupID と version は省略できる
POM に plugin が定義されていれば groupID は省略可
Version は最新のものが使われる
groupID が org.apache.maven.plugin は暗黙のうちに省略可
artifactID が maven-XXXXX-plugin であれば maven と plugin が省略で
フル指定 きる。
mvn jp.canetrash.maven.plugin:maven-sample-plugin:1.0:sample
省略形
mvn sample:sample
2007/12/19 23