狠狠撸
Search
Submit Search
Maven2 plugin
?
Download as PPT, PDF
?
1 like
?
1,037 views
Funato Takashi
maven2 plugin入門。過去の発表資料
Read less
Read more
1 of 26
Download now
Download to read offline
More Related Content
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
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 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
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:sample 2007/12/19 23
24.
デモ
25.
まとめ ? MavenPlugin難しくない! ? アイデアしだいでいろんなことができる ?
3rdParty 製の MavenPlugin もたくさんあ る ? Maven をうまく使ってハッピーに 2007/12/19 25
26.
おわり
Download