Maven2 プラグイン入門              第一回チキチキ     『 ant から maven2 へ 』〜血があつい鉄道ならばこまるよね〜                    船戸 隆           tfunato@gma...
自己紹介 舩戸 隆     株式会社エーティーエルシステムズ所属     日本一暑い町、岐阜県多治見市出身     Java  プログラマ     id:tfunato     http://www.canetrash.jp    ...
アジェンダ     Plugin とは? Maven どのように動いているか? プラグインの作り方     ファーストステップ     パラメータの受け渡し     登録の方法     起動の方法 まとめ2007/12/19  ...
MavenPlugin とは
MavenPlugin とは プロジェクトのライフサイクルの各フェ   ーズにおける、ゴールを実行する     ビルド、テスト、レポート出力・・・ プロセスを簡素・共通化     コマンドの引数を変えるだけ     誰がやっても同じ手...
どのように動いているか?
アーキテクチャ概要        maven-clean-plugin maven-eclipse-plugin                                                  maven-site-plugi...
主要な使用ライブラリ Classworlds          http://classworlds.codehaus.org/       シンプルなクラスローディングライブラリ       Maven コアとプラグインのクラスローダを...
Mojo Mojo     Maven プラグインインターフェース     M aven plain O ld J ava O bject       org.apache.maven.plugin.Mojo インターフェース     ...
どのように動いているか? Maven2         の仕組み MavenCore                            Mojo                                      Classload...
BuildLifeCycle とは BuildLifeCycle    Maven   ではコアコンセプトとして     BuildLifeCycle という考えに基づいている    LifeCycle としてビルド、配布、成果物作成、 ...
BuildLifeCycle                              <configuration> 定義済み                                  <lifecycles>           ...
BuildLifeCycle 定義済み                   Phase – Default Phase                      概略             Phase                    ...
BuildLifeCycle 定義済み            Phase – Clean        Phase    Mojo         Plugin                   説明pre-clean           ...
BuildLifeCycle 定義済み           Phase – Site       Phase    Mojo          Plugin                  説明pre-site               ...
プラグインの作り方
ファーストステップ ArchetypePlugin               でプロジェクトを作る     Archetypeに maven-archetype-mojo を指定     MavenPlugin プロジェクトの雛形ができ...
Goal 、 Phase 指定 Goal       、 Phase の指定     Javadoc     で記述             /**              * @goal sample              * @p...
パラメータの受け渡し Plugin      に外部からパラメータを渡す       JavaDoc で記述( Doclet と同じ)       渡す方法は3つ            起動引数としてパラメータを渡す          ...
パラメータの設定 実際のコード例           /**          * @parameter          */          private String param;     フィールドに              ...
指定できるパラメータの種類 java.lang.String java.lang.Integer   、 Double 、 Long boolean java.util.Date java.io.File java.util.URL...
登録の仕方 mvn        install するだけ     ローカルのリポジトリにインストールされる     ${user.home}/.m2/repository              mvn install     pa...
起動の仕方 mvn        {groupID}:{artifactID}:{version}:{goal}     このうち           groupID と version は省略できる         POM に plug...
デモ
まとめ MavenPlugin難しくない! アイデアしだいでいろんなことができる 3rdParty 製の MavenPlugin もたくさんあ  る Maven をうまく使ってハッピーに2007/12/19               25
おわり
Upcoming SlideShare
Loading in …5
×

Maven2 plugin

885 views

Published on

maven2 plugin入門。過去の発表資料

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
885
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Maven2 plugin

  1. 1. Maven2 プラグイン入門 第一回チキチキ 『 ant から maven2 へ 』〜血があつい鉄道ならばこまるよね〜 船戸 隆 tfunato@gmail.com
  2. 2. 自己紹介 舩戸 隆  株式会社エーティーエルシステムズ所属  日本一暑い町、岐阜県多治見市出身  Java プログラマ  id:tfunato  http://www.canetrash.jp  Twitter http://twitter.com/tfunato2007/12/19 2
  3. 3. アジェンダ Plugin とは? Maven どのように動いているか? プラグインの作り方  ファーストステップ  パラメータの受け渡し  登録の方法  起動の方法 まとめ2007/12/19 3
  4. 4. MavenPlugin とは
  5. 5. MavenPlugin とは プロジェクトのライフサイクルの各フェ ーズにおける、ゴールを実行する  ビルド、テスト、レポート出力・・・ プロセスを簡素・共通化  コマンドの引数を変えるだけ  誰がやっても同じ手順 Java でできることは何でもできる2007/12/19 5
  6. 6. どのように動いているか?
  7. 7. アーキテクチャ概要 maven-clean-plugin maven-eclipse-plugin maven-site-plugin MOJO Maven plain Old Java Object Classworlds Plexus Maven-core Java2007/12/19 7
  8. 8. 主要な使用ライブラリ Classworlds http://classworlds.codehaus.org/  シンプルなクラスローディングライブラリ  Maven コアとプラグインのクラスローダを切り分ける Plexus http://plexus.codehaus.org/  軽量 DI コンテナ  Maven 2の本体そのもの  コンポーネントのライフサイクルのサポート  ネストしたコンテナ  コンポーネント単位のクラスローダーの分離2007/12/19 8
  9. 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. 10. どのように動いているか? Maven2 の仕組み MavenCore Mojo Classloader Classworlds Mojo Plexus Classloader Mojo Plugin ごとに Classloader が別 Classloader2007/12/19 10
  11. 11. BuildLifeCycle とは BuildLifeCycle  Maven ではコアコンセプトとして BuildLifeCycle という考えに基づいている  LifeCycle としてビルド、配布、成果物作成、 テストなどのプロセスを明確に分離して定義し ている  その分離した単位を Phase という  Phase は Plugin のまとまり  デフォルトの Phase は ${M2_HOME}/lib/maven-core-2.0.X-uber.jar の META2007/12/19 - INF/plexus/components.xml に定義 11
  12. 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. 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. 14. BuildLifeCycle 定義済み Phase – Clean Phase Mojo Plugin 説明pre-clean clean フェーズの前に実行されるフェーズclean clean maven-clean-plugin 生成物を削除するフェーズpost-clean clean フェーズの後に実行されるフェーズ2007/12/19 14
  15. 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
  16. 16. プラグインの作り方
  17. 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. 18. Goal 、 Phase 指定 Goal 、 Phase の指定  Javadoc で記述 /** * @goal sample * @phase compile */ public class MyMojo extends AbstractMojo {  上記の例だと、ゴールは sample で compile の フェーズで実行される2007/12/19 18
  19. 19. パラメータの受け渡し Plugin に外部からパラメータを渡す  JavaDoc で記述( Doclet と同じ)  渡す方法は3つ  起動引数としてパラメータを渡す • -D つきでパラメータを渡す  pom.xml で定義 • <configuration> で定義  settings.xml で定義 • プロファイルのプロパティに定義  同時に定義された場合  pom.xml > settings.xml > 起動引数の順で使われる2007/12/19 19
  20. 20. パラメータの設定 実際のコード例   /** * @parameter */ private String param;  フィールドに @parameter を記述  例では param という名前で定義される • POM に定義されてるもののみ設定される • 起動時パラメータを受け取るには explession を使う2007/12/19 20
  21. 21. 指定できるパラメータの種類 java.lang.String java.lang.Integer 、 Double 、 Long boolean java.util.Date java.io.File java.util.URL java.util.Map Collections 配列 その他2007/12/19 21
  22. 22. 登録の仕方 mvn install するだけ  ローカルのリポジトリにインストールされる  ${user.home}/.m2/repository mvn install  packaging されるときに plugin.xml が作成され る  Plugin のパラメータや goal が定義されたもの2007/12/19 22
  23. 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:sample2007/12/19 23
  24. 24. デモ
  25. 25. まとめ MavenPlugin難しくない! アイデアしだいでいろんなことができる 3rdParty 製の MavenPlugin もたくさんあ る Maven をうまく使ってハッピーに2007/12/19 25
  26. 26. おわり

×