Java-Ja Maven2.0 入門

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Java-Ja Maven2.0 入門 - Presentation Transcript

    1. Maven2.0 入門 ペ・ダイチャン (宮本 大輔) [email_address] Java-ja 第一回チキチキ 『 ant から maven2 へ 』〜血があつい鉄道ならばこまるよね〜
    2. 自己紹介 (約 10 秒限定)
      • なまえ: 宮本 大輔 (ペ・ダイチャン)
        • 普通に「大ちゃん」と呼んでやってください。
      • メールとブログ: あります。
      • しごと: 今は薬屋
        • ハカーではありません。
      • 最近…
        • Seasar2 の Dolteng コミッタになりました。
        • 技術屋さんに転職したいな、と。
      • 今後ともよろしくお願いします。
      検索 ペ・ダイチャン
    3.  
    4. というわけで、    早速ですがアジェンダです。
      • 第壱部 Maven って何だ?
      • 第弐部 Maven の基礎知識
      • 第参部 Maven を導入してみる
      • 第肆部 Maven を動かしてみる
      • 第伍部 JAR から WAR へ
    5. 第壱部 Maven って何だ?
      • ソフトウェアプロジェクト管理ツール
        • ビルドツール
      • プロジェクトのライフサイクル全体を管理
        • 依存 JAR の解決・管理
        • コンパイル -> テスト
        • パッケージング( JAR, WAR 等に固める)
        • 成果物リリース
        • その他(ドキュメンテーション等)
    6. ぶっちゃけ、何が出来ますか?
      • ソース書き後->リリースまでの各ステップ
      • というか、独自に拡張をすれば何でも…
      • 以上を、コマンド 1 つでまとめて実行
        • 各種準備
          • 依存解決等
        • コンパイル
        • テスト
        • パッケージング
          • JAR
          • WAR
        • リリース
          • JAR 配布
          • WAR デプロイ
        • その他
          • SQL 実行
          • サイト生成・アップロード
          • Javadoc 生成・アップロード
    7. 歴史
      • make -> Makefile
      • Ant -> build.xml
      • Maven -> pom.xml
      • Maven の Version.2
        • ver.1 と 2 はほぼ別物
        • Maven1 は終了?
      発売希望
    8. Maven の特徴(他との違い)
      • 依存関係の自動解決(自動 DL )
        • 依存ライブラリ(推移的依存関係を含む)
        • つまり、基本的にネットが繋がっている環境が前提。
      • Convention over Configuration
        • 加算的アプローチ と 差分的アプローチ
      • 統一したビルドシステム -> Ant と違い、把握しやすい
        • ディレクトリ構成
        • ビルド手順
      • 小さな core と大量の plugin
    9. 欠点もあります orz
      • デフォルト動作を覚えないと使えない。
      • 設定ファイルが XML で鬱陶しい。
      • 何か、気軽じゃない。
    10. 第弐部 Maven の基礎知識
      • 標準のディレクトリ構成を理解する。
      • 用語を理解する。
        • artifact って何?
        • リポジトリって何?
        • パッケージングって何?
        • pom って何?
        • ライフサイクル? フェーズ? プラグイン?
    11. 標準のディレクトリ構成(主要)
      • project root
        • src -------------------------------- ソースフォルダ
          • main ------------------------- メインコード
            • java --------------------- メインの Java ソース
            • resources -------------- メインのリソースファイル
            • ( webapp ) ------------- Web アプリのルート
          • test -------------------------- テストコード
            • java --------------------- テストの Java ソース
            • resources -------------- テストのリソースファイル
        • target ---------------------------- 出力ディレクトリ( artifact 等)
          • classes ---------------------- メインの class
          • test-classes ----------------- テストの class
          • site --------------------------- プロジェクトサイト HTML
        • pom.xml ------------------------- maven 設定ファイル
    12. artifact (成果物 , 依存 jar, plugin )
      • groupId
        • package 名みたいなもの
        • 例えば「 com.h2database 」
      • artifactId
        • class 名みたいなもの
        • 例えば「 h2 」
      • version
        • そのまんま
        • 例えば「 1.0.62 」
      • 3 つ合わせて、アーティファクトを一意に特定
      <……> <groupId> com.example </groupId> <artifactId> my-application </artifactId> <version> 1.0.0 </version> </……>
    13. リポジトリ ( artifact 置き場)
      • ローカル・リポジトリ ( ~/.m2/repository )
        • 各開発者のクライアント内
        • プライベート領域
        • キャッシュ
      • リモート・リポジトリ
        • maven プロジェクト提供の central
        • その他、各所が運営するリポジトリ
        • 個人的にリモートリポジトリを運営も可能
    14. パッケージング (成果物 artifact の種類)
      • jar
      • war
      • ejb
      • ejb3
      • ear
      • rar
      • par
      • pom
      • maven-plugin
    15. pom.xml ~ ぽむ
      • Project Object Model
      • 実体は XML ファイル
      • ビルドの処理手順を記述
        • プロジェクト固有の情報(名称など)
        • イレギュラーな処理
        • 記述しなければ、デフォルトの動作( CoC )
    16. ビルド・ライフサイクルとフェーズ
      • ライフサイクル = maven を起動する動機
        • ビルド(成果物を生成・配布)したい
        • クリーンアップしたい
        • プロジェクトサイトを生成・更新したい
      • フェーズ
        • ライフサイクルはフェーズの集まり
        • 処理内容は plugin に丸投げ
    17. プラグインとゴール
      • プラグイン
        • プラグインは、ゴールの集まり
        • 実体はリポジトリに配備された Maven artifact (JAR)
      • ゴール = プラグインの中の個々の処理
        • 基本的に、各フェーズに紐付け
      • 例えば compile フェーズ
        • maven-compiler-plugin:compile
      • 例えば testCompile フェーズ
        • maven-compiler-plugin:testCompile
    18. 3 つのライフサイクル
      • default 準備 -> コンパイル -> テスト -> リリース
        • 長いので後述
      • clean 中間生成物を含め、生成されたものを削除
        • pre-clean
        • clean target フォルダを削除
        • post-clean
      • site プロジェクトサイト構築
        • pre-site
        • site HTML を生成
        • post-site
        • site-deploy Web サーバにアップロード
    19. default のフェーズ
      • process-resources
        • リソースファイルを加工
        • 出力 dir ( target )にコピー
      • compile
        • main をコンパイル
      • process-resources
      • compile
      • process-test-resources
      • test-compile
      • test
      • package
      • install
      • deploy
    20. default のフェーズ
      • process-test-resources
        • テスト用リソースをコピー
      • test-compile
        • test をコンパイル
      • process-resources
      • compile
      • process-test-resources
      • test-compile
      • test
      • package
      • install
      • deploy
    21. default のフェーズ
      • test
        • テストの実行 (JUnit)
        • 結果判定し、失敗ならば
        • 処理を中断
      • process-resources
      • compile
      • process-test-resources
      • test-compile
      • test
      • package
      • install
      • deploy
    22. default のフェーズ
      • package
        • パッケージングを行う
        • JAR とか WAR を作る。
      • process-resources
      • compile
      • process-test-resources
      • test-compile
      • test
      • package
      • install
      • deploy
    23. default のフェーズ
      • install
        • ローカルリポジトリに配備
        • ローカルで参照可能に
        • ~/.m2/repository
      • deploy
        • リモートリポジトリに配備
        • 外部から参照可能に
      • process-resources
      • compile
      • process-test-resources
      • test-compile
      • test
      • package
      • install
      • deploy
    24. 各フェーズで行われる処理 (デフォルト時) リモートリポジトリにアップロード deploy ローカルリポジトリ( ~/.m2/repository/ )にコピー install war に固める jar に固める package JUnit テストを実行 test src/test/java をコンパイル test-compile test-resource を test 出力 dir にコピー process-test-resources src/main/java をコンパイル compile resource を main 出力 dir にコピー process-resources war jar phase \ packaging
    25. 各フェーズに割り当てられる plugin (デフォルト時) maven-deploy-plugin deploy maven-install-plugin install maven-war-plugin maven-jar-plugin package maven-surefire-plugin test maven- compiler -plugin test-compile maven- resources -plugin process-test-resources maven- compiler -plugin compile maven- resources -plugin process-resources war jar phase \ packaging
    26. デフォルトの動作を変更したい時
      • pom 次第で、処理を変更させる事が可能。
      • デフォルトプラグインに引数を与える。
        • これにより、デフォルト処理を微調整。
      • 既存(非デフォルト)プラグインの使用。
        • 新しい処理をフェーズにマッピング。
        • 1 フェーズで複数プラグインを動かす事も可能。
      • 自作のプラグインを作成。
        • 簡単な処理ならば、クラス 1 つで作れます。
    27. 第参部 Maven を導入してみる
      • ダウンロード(最新版は v2.0.8 )
        • http://maven.apache.org/download.html
      • 適当なディレクトリに解凍
        • ここでは c:workdevapache-maven-2.0.8
        • パスに空白や 2 バイト文字を含まない様に
    28. 設定
      • 環境変数設定
        • JAVA_HOME と Java の PATH
        • M2_HOME=c:workdevapache-maven-2.0.8
        • PATH に %M2_HOME%in を追加
      • 必要に応じて、プロキシの設定
        • %M2_HOME%confsettings.xml
    29. 第肆部 Maven を動かしてみる
      • maven を起動
      • 目的に至るまでの各フェーズを実行
        • 各フェーズは、その 1 つ前のフェーズに依存
      • 目的のフェーズが完了 -> SUCCESS
      • 問題発生 -> 処理中断 -> FAILURE
    30. Maven の起動
      • フェーズを指定して起動
        • mvn [option] < ターゲットフェーズ名 >
          • mvn package
          • mvn compile
      • プラグインを指定して起動
        • mvn [option] < プラグイン名 >:< ゴール名 >
          • mvn javadoc:javadoc
          • mvn archetype:create
          • mvn compiler:testCompile
    31. 参考 1 maven-archetype-plugin
      • プロジェクトの骨組みを作る。
      • groupId + artifactId + archetypeArtifactId
        • maven-archetype-quickstart JAR をターゲットとする開発用
        • maven-archetype-webapp WAR をターゲットとする開発用
        • maven-archetype-j2ee EAR をターゲットとする開発用
        • maven-archetype-mojo Maven2 プラグイン開発用
        • その他、よく分からないモノも含め、色々。
      • mvn archetype:create
        • -DgroupId=xx
        • -DartifactId=yy
        • -DarthetypeArtifactId=zz
    32. 参考 2 maven-eclipse-plugin
      • Maven プロジェクトを Eclipse で扱えるように各種設定を行う。
      • mvn eclipse:add-maven-repo
        • M2_REPO という Maven2 リポジトリのパスを表すクラスパス変数を追加する。
      • mvn eclipse:eclipse
        • Maven2 プロジェクトを Eclipse でインポート可能にする。
    33. Ex.1 ディレクトリ構成
      • src --------------------------------------- ソースフォルダ
        • main -------------------------------- メインコード
          • java ----------------------------- メインの Java ソース
            • com.example. App .java
          • resources ----------------- メインのリソースファイル
            • ( com.example.Messages.properties )
        • test --------------------------------- テストコード
          • java ---------------------------- テスト用の Java ソース
            • com.example. AppTest .java
          • resources ---------------- テスト用のリソースファイル
      • pom.xml ------------------------------- maven 設定ファイル
    34. Ex.1 pom.xml <project …> <modelVersion> 4.0.0 </modelVersion> <groupId> com.example </groupId> <artifactId> javaja-ex1 </artifactId> <version> 1.0-SNAPSHOT </version> <packaging> jar </packaging> <name> java-ja Maven Example 1 </name> <dependencies> <!-- 略 --> </dependencies> </project>
    35. Demonstration 1 さて、 やってみましょか。
    36. Ex.2 依存性を解決してみる import org.apache.commons.lang.WordUtils; … public static void main(String[] args) { System. out .println( WordUtils.swapCase(“ Hello, Java-ja! ”)); } …
    37. Ex.2 commons-lang を使う
      • maven リポジトリ検索サイト
        • http://mvnrepository.com/
      • commons-lang を使いたいとする。
    38. Ex.2 commons-lang を使う
    39. Ex.2 pom.xml <project …> <!-- … --> <dependencies> <dependency>     <groupId> commons-lang </groupId>     <artifactId> commons-lang </artifactId>     <version> 2.3 </version> </dependency> </dependencies> </project>
    40. Demonstration 2 さて、 やってみましょか。
    41. 第伍部 JAR から WAR へ
      • 今回は JAR ではなく WAR を作ってみる。
      • コマンド 1 つで、 Tomcat にデプロイ
        • mvn tomcat:deploy
        • mvn tomcat:undeploy
      • コマンド 1 つで、アプリケーション起動 / 停止
        • mvn tomcat:start
        • mvn tomcat:stop
    42. Ex.3 ディレクトリ構成
      • src -------------------------------------- ソースフォルダ
        • main ------------------------------- メインコード
          • resources --------------------- メインのリソースファイル
          • webapp ----------------------- Web アプリ ルートフォルダ
            • index.jsp
            • WEB-INF
              • web.xml
      • target ---------------------------------- 出力フォルダ
      • pom.xml ------------------------------- maven 設定ファイル
    43. Ex.3 pom.xml ① <project …> <pluginRepositories> <pluginRepository> <releases><enabled> false </enabled></releases> <snapshots /> <id> Maven Snapshots </id> <url> http://snapshots.repository.codehaus.org/ </url> </pluginRepository> </pluginRepositories> </project>
    44. Ex.3 pom.xml ② <project …> <build> <plugins> <plugin> ← Tomcat プラグインの設定 <groupId> org.codehaus.mojo </groupId> <artifactId> tomcat-maven-plugin </artifactId> <version> 1.0-SNAPSHOT </version> <configuration> <server> localhost-tomcat </server> ← 任意の名前 <url> http://localhost:8080/manager </url> ← マネージャ URL <path> /javaja-ex3 </path> ← デプロイ先の path </configuration> </plugin> </plugins> </build> </project>
    45. Ex.3 settings.xml
      • pom.xml は、全開発者環境で共通の設定。
      • settings.xml は、開発環境固有の設定。
        • %M2_HOME%/conf/settings.xml 他
      <setting> <servers> <server> <id> localhost-tomcat </id> ← サーバ ID (任意。 pom.xml 内で使用) <username> admin </username> ← Tomcat Manager 用 <password> admin </password> ← アカウント </server> </servers> </setting>
    46. Demonstration 3 さて、 やってみましょか。
    47. 参考書
      • 現在唯一の書籍
        • 日本語
        • Maven 2.0 対応
      • お求めは、
      http://www.amazon.co.jp/exec/obidos/ASIN/477412964X/
    48. ご静聴 ありがとう ございました! Fin
    49. 質問など、ございましたら。
      • 全部答えられるかどうか微妙ですが。

    + Daisuke MiyamotoDaisuke Miyamoto, 3 years ago

    custom

    7721 views, 0 favs, 4 embeds more stats

    More info about this document

    CC Attribution License

    Go to text version

    • Total Views 7721
      • 7509 on SlideShare
      • 212 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 36
    Most viewed embeds
    • 208 views on http://d.hatena.ne.jp
    • 2 views on http://72.14.235.132
    • 1 views on http://209.85.175.104
    • 1 views on http://www.slideshare.net

    more

    All embeds
    • 208 views on http://d.hatena.ne.jp
    • 2 views on http://72.14.235.132
    • 1 views on http://209.85.175.104
    • 1 views on http://www.slideshare.net

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories