2008年9月アーカイブ

Maven2ではレポジトリにデプロイされている数多くのライブラリをとても簡単に利用することができます。

しかし、どこのレポジトリにもデプロイされていない、ましてやMaven2管理になっていないライブラリも同様に数多く存在します。
それではMaven2レポジトリに存在しないライブラリを使う場合にはどうすればいいのでしょうか?

いくつかの方法がありますが、代表的な手法をご紹介します。

※ライブラリのライセンスによっては再配布ができないものもあります。
※ライセンス違反などでトラブルになっても当方は責任を持ちませんので各自の責任で行ってください。

プラグイン

| # Comments
Maven2はプラグインを使って機能拡張ができるように設計されています。

開発の基本となるコンパイルやパッケージングもプラグインによって処理が行われています。
初回の起動時にものすごく時間がかかるのは、必要なプラグインをセントラルレポジトリからいっせいにダウンロードしているからです。

今回はプラグインの基本について見てみます。
Maven2を使って新規にプロジェクトを作るとき、毎回pom.xmlの設定やディレクトリの配置をするのは面倒です。
(Maven2を使い込めば使い込むほどpom.xmlファイルが肥大化してきます。)

そこでmaven-archetypeというパッケージングを使って、プロジェクトの雛形を作ることができます。

モジュール

| # Comments
複数人のチームでの開発では、機能別やレイヤー別に担当者を分けて開発を行います。

ユーザー向けwebapp、管理画面webapp、共通部分jarでの分割、また以前からの例で言えば、データアクセスやロジックを扱うsample-jarと、コントローラ、ビューを扱うsample-webappを別々の人が担当するという分割が考えられます。

このような場合にMaven2では「モジュール」という概念で管理していきます。
Maven2のもう1つの有用な機能として、プロジェクトサイト生成機能があります。

pom.xmlファイルに書かれた各種情報を元に、プロジェクト情報をまとめたサイトを自動生成してくれます。
完全に自動化できる情報は限られていますが、その他の情報に関してもプロジェクト内にファイルを置くことで同じレイアウトのページとして出力ができます。
Maven2のサイトもサイト生成機能を利用して作られています。

それでは基本的な機能を見ていきます。
Maven2を使う上で最も便利な機能の内の1つに、依存関係の自動解決があります。

pom.xmlファイルに設定を記述しておくだけで、Maven2レポジトリと呼ばれるサーバーからライブラリファイルをダウンロードし、クラスパスに追加してくれるという機能です。
世界中で開発されている数多くのライブラリがセントラルレポジトリにデプロイされており、簡単に利用できるようになっています。
セントラルレポジトリ内のライブラリであれば、Maven Repository: Search/Browse/Exploreというサイトで検索でき、groupId / artifactId / versionを検索することができるようになっています。

他にも各地にレポジトリが公開されており、そちらにあるライブラリもレポジトリの設定を追加するだけで利用できるようになります。

それでは、それぞれの設定について見てみます。
Maven2では、様々な種類のファイルを成果物として生成することができます。

Maven2の基本にてpackage指定でMaven2を実行することでjar/warファイルを生成すると書きましたが、この出力ファイルの種類を指定するためのpom.xmlファイルの設定として<packaging>タグがあります。

基本的なpackagingの種類を見ていきます。

Maven2の基本

| # Comments | 2 Trackbacks
Maven2では、1つの成果物(=artifact/アーティファクト、jar/warファイルなど)を管理するために1つの「プロジェクト」が対応します。
このプロジェクトは、1つのpom.xmlファイルと、原則として決まった構成のディレクトリ群からできています。

+ project
    + src
        + main
            + java
            + resources
          ( + webapp )
        + test
           + java
           + resources
    + target
        + classes
        + test-classes
    - pom.xml

以下では、pom.xmlファイルの基本とそれぞれのディレクトリについて、またMaven2の基本的なコマンドについて見ていきます。
どう書く?orgにて、なぜかどうしても気になる問題があって頭を悩ませてしょうがないのでまじめに考えてみました。

2^i * 3^j * 5^k なる整数

2^i * 3^j * 5^k の形で表される整数を小さい方から順に 100 個列挙するプログラムを書いてください。 i, j, k は 0 以上の整数です。アルゴリズムのオーダーについても考えてみてください。

例えば最初の 10 個は次のようになります:

 1 = 2^0 * 3^0 * 5^0
 2 = 2^1 * 3^0 * 5^0
 3 = 2^0 * 3^1 * 5^0
 4 = 2^2 * 3^0 * 5^0
 5 = 2^0 * 3^0 * 5^1
 6 = 2^1 * 3^1 * 5^0
 8 = 2^3 * 3^0 * 5^0
 9 = 2^0 * 3^2 * 5^0
10 = 2^1 * 3^0 * 5^1
12 = 2^2 * 3^1 * 5^0

※解答では i, j, k の各値を示す必要はありません。

Maven2のインストールから基本的な使い方までを振り返ってみます。

Maven2とは、

Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.

です。w

以下の手順では、Javaはすでにインストールされているものとします。
Javaの世界にはMaven2という便利なビルドツールがあります。

先日開催されたSeasar Conference 2008 Autumnにて、JiemamyというEclipse&Maven2プラグインが紹介されていました。

JiemamyはオープンソースのDB設計・リファクタリングサポートツールです。

DBリファクタリングの必要性は明らかですが、様 々な要因により、気軽にリファクタリングを行うことができません。Jiemamyは、DBの進化的設計(Evolutionaly Database Design)を実現するために、以下の要件を軸に、DBに依存するシステムの開発・運用をサポートします。

  • データベースの構成変更をGUIの操作みで行える。
  • DML(INSERT文 = データ)も一緒に管理出来る。
  • Maven2等と連携することにより、チェックアウトしたてのアプリケーションをコマンド一つで「使える状態」に出来る。

このツールに触発されて、Ruby on Railsが持っている便利な機能であるmigrationがMaven2で行えないか、と考えました。

9arrows

| # Comments
9arrows

プロジェクトの成果物を細分化し、担当者割り振りやスケジュール・進捗状況の管理を行うWBS(Work Breakdown Structure:作業分解図)。
プロジェクトを管理する上で欠かせないこの手法を中心に、チームとしても個々としても作業を効率的に進められるようになるツールです。

ということですので、試してみることにします。

PostgreSQLで構築されているようですが、手元に環境がないのでMySQLで動くようにしてみようと思います。

Hadoopお試し

| # Comments | 1 Trackback
GFS(Google File System)とMapReduceのオープンソース版であるHadoopを試してみました。

物理サーバーは手元にないので、ローカルのVMwareにCentOS5.2を3つ(master×1/slave×2)を立てて行いました。

参考にしたのは以下のサイト。

Twitter Icon

AdSense

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 5.14-ja

Google検索

カスタム検索

2013年10月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31