Your SlideShare is downloading. ×
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Maven2 plugin
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Maven2 plugin

649

Published on

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

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

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

No Downloads
Views
Total Views
649
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Maven2 プラグイン入門 第一回チキチキ 『 ant から maven2 へ 』〜血があつい鉄道ならばこまるよね〜 船戸 隆 tfunato@gmail.com
  • 2. 自己紹介 舩戸 隆  株式会社エーティーエルシステムズ所属  日本一暑い町、岐阜県多治見市出身  Java プログラマ  id:tfunato  http://www.canetrash.jp  Twitter http://twitter.com/tfunato2007/12/19 2
  • 3. アジェンダ Plugin とは? Maven どのように動いているか? プラグインの作り方  ファーストステップ  パラメータの受け渡し  登録の方法  起動の方法 まとめ2007/12/19 3
  • 4. MavenPlugin とは
  • 5. MavenPlugin とは プロジェクトのライフサイクルの各フェ ーズにおける、ゴールを実行する  ビルド、テスト、レポート出力・・・ プロセスを簡素・共通化  コマンドの引数を変えるだけ  誰がやっても同じ手順 Java でできることは何でもできる2007/12/19 5
  • 6. どのように動いているか?
  • 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. 主要な使用ライブラリ 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 が別 Classloader2007/12/19 10
  • 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. 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
  • 16. プラグインの作り方
  • 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
  • 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. 登録の仕方 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:sample2007/12/19 23
  • 24. デモ
  • 25. まとめ MavenPlugin難しくない! アイデアしだいでいろんなことができる 3rdParty 製の MavenPlugin もたくさんあ る Maven をうまく使ってハッピーに2007/12/19 25
  • 26. おわり

×