Recommended Groovy base gradle_20130309
Gws 20130315 gradle_handson
Jjug 20140430 gradle_basic
Java開発の強力な相棒として今すぐ使えるGroovy
Head toward Java 13 and Java 14 #jjug
Spring in-summer-gradle-hands on-withanswers
New features of Groovy 2.0 and 2.1
JavaFX & GlassFish 勉強会 Project Visage
Django最速デバッグ指南 PyConAPAC 2013
How to manage Cakephp @CakePHP_Fukuoka_2
More Related Content Groovy base gradle_20130309
Gws 20130315 gradle_handson
Jjug 20140430 gradle_basic
Java開発の強力な相棒として今すぐ使えるGroovy
What's hot (20)
Head toward Java 13 and Java 14 #jjug
Spring in-summer-gradle-hands on-withanswers
New features of Groovy 2.0 and 2.1
JavaFX & GlassFish 勉強会 Project Visage
Django最速デバッグ指南 PyConAPAC 2013
How to manage Cakephp @CakePHP_Fukuoka_2
Similar to Maven2 プラグイン入門 (20)
Agileツール適合化分科会(構成管理・ビルドツール)
Multibranch Pipeline with Docker 入門編
企業におけるSpring@日本springユーザー会20090624
Should we write such like plugin or not?
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
Azure DevOps Online Vol.3 - Inside Azure Pipelines
Behat+Symfony2ではじめるBDD超入門
Maven2 プラグイン入門1. Maven2 プラグイン入門 第一回チキチキ 『 ant から maven2 へ 』 〜血があつい鉄道ならばこまるよね〜 船戸 隆 [email_address] 2. 自己紹介 舩戸 隆 株式会社エーティーエルシステムズ所属 日本一暑い町、岐阜県多治見市出身 Java プログラマ id:tfunato http://www.canetrash.jp Twitter http ://twitter.com/tfunato 7. アーキテクチャ概要 Java Classworlds Plexus Maven-core MOJO M aven plain O ld J ava O bject maven-site-plugin maven-eclipse-plugin maven-clean-plugin 8. 主要な使用ライブラリ Classworlds シンプルなクラスローディングライブラリ Maven コアとプラグインのクラスローダを切り分ける Plexus 軽量 DI コンテナ Maven 2の本体そのもの コンポーネントのライフサイクルのサポート ネストしたコンテナ コンポーネント単位のクラスローダーの分離 http://classworlds.codehaus.org/ http://plexus.codehaus.org/ 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() を実装するだけ! 11. BuildLifeCycle とは BuildLifeCycle Maven ではコアコンセプトとして BuildLifeCycle という考えに基づいている LifeCycle としてビルド、配布、成果物作成、テストなどのプロセスを明確に分離して定義している その分離した単位を Phase という Phase は Plugin のまとまり デフォルトの Phase は ${M2_HOME}/lib/maven-core-2.0.X-uber.jar の META - INF/plexus/components.xml に定義 12. BuildLifeCycle 定義済み LifeCycle 大きく分けて3つ Default プロジェクトのライフサイクル Clean プロジェクトのクリーン 生成物のお掃除 Site プロジェクトのサイト作成 ドキュメント、レポート作成 派生成果物 <configuration> <lifecycles> <lifecycle> <id>default</id> <phases> <phase>validate</phase> <phase>initialize</phase> <phase>generate-sources</phase> <phase>process-sources</phase> <phase>generate-resources</phase> <phase>process-resources</phase> <phase>compile</phase> <phase>process-classes</phase> <phase>generate-test-sources</phase> <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> <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> 13. BuildLifeCycle 定義済み Phase – Default Via:Maven 2.0.8 テストコードコンパイル後処理 process-test-classes 成果物の配備 deploy 成果物のインストール install パッケージング後チェック verify インテグレーションテスト後処理 post-integration-test インテグレーションテスト integration-test インテグレーションテスト準備 pre-integration-test 成果物のパッケージング package テスト実行 test テストコードコンパイル test-compile 概略 Phase リソース成形 process-resources リソース生成 generate-resources テストリソース成形 process-test-resources テストリソース生成 generate-test-resources テストコード成形 process-test-sources テストコード生成 generate-test-sources コンパイル後処理 process-classes コンパイル compile ソースコードの成形 process-sources ソースコード生成 generate-sources ビルドプロセスの準備 initialize POM の精査 validate 概略 Phase 14. BuildLifeCycle 定義済み Phase – Clean clean フェーズの後に実行されるフェーズ 生成物を削除するフェーズ clean フェーズの前に実行されるフェーズ 説明 clean Mojo post-clean maven-clean-plugin clean pre-clean Plugin Phase 15. BuildLifeCycle 定義済み Phase – Site site フェーズで生成されたものをデプロイする site フェーズの後に実行されるフェーズ JavaDoc 、レポートなどを生成するフェーズ site フェーズの前に実行されるフェーズ 説明 deploy site Mojo maven-site-plugin site-deploy post-site maven-site-plugin site pre-site Plugin Phase 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> 18. Goal、Phase指定 Goal 、 Phase の指定 Javadoc で記述 上記の例だと、ゴールは sample で compile のフェーズで実行される /** * @goal sample * @phase compile */ public class MyMojo extends AbstractMojo { 19. パラメータの受け渡し Plugin に外部からパラメータを渡す JavaDoc で記述( Doclet と同じ) 渡す方法は3つ 起動引数としてパラメータを渡す -D つきでパラメータを渡す pom.xml で定義 <configuration> で定義 settings.xml で定義 プロファイルのプロパティに定義 同時に定義された場合 pom.xml > settings.xml > 起動引数 の順で使われる 20. パラメータの設定 実際のコード例 フィールドに @parameter を記述 例では param という名前で定義される POM に定義されてるもののみ設定される 起動時パラメータを受け取るには explession を使う /** * @parameter */ private String param; 22. 登録の仕方 mvn install するだけ ローカルのリポジトリにインストールされる ${user.home}/.m2/repository packaging されるときに plugin.xml が作成される Plugin のパラメータや goal が定義されたもの mvn install 23. 起動の仕方 mvn {groupID}:{artifactID}:{version}:{goal} このうち groupID と version は省略できる POM に plugin が定義されていれば groupID は省略可 Version は最新のものが使われる groupID が org.apache.maven.plugin は暗黙のうちに省略可 artifactID が maven-XXXXX-plugin であれば maven と plugin が省略できる 。 mvn sample:sample mvn jp.canetrash.maven.plugin:maven-sample-plugin:1.0:sample フル指定 省略形