2002-05-20 (Mon) 作業作業作業

開発

ずーーっと作業。

本日のツッコミ(全1件) [ツッコミを入れる]

#  [ずーーっと読書・・・。]


2003-05-20 (Tue)

手術

骨折のボルト抜きかや?がんばりや!

Maven 指南

Ant で痒いところまで手が届くように完成されたビルドシステムを Maven に移行しようとして四苦八苦。苦労しても得るものは少ないなぁと悩んでいたところ (や) に割り切った活用方法を教えてもらったのでメモ。

Maven を効率的に使うにはプロジェクト自体を Maven 流に合わせるのが一番。Maven によって隠蔽されている細かいビルドルールは、逆らわずにそのまま利用する。

  • できるだけ Maven そのまま使う
  • ディレクトリ構成も Maven のデフォルトに合わせる
  • プロジェクトは Maven で扱いやすい単位に切り出す
    • 複数の jar 生成が必要なら project.xml を分ける
  • 難しいことは Ant やスクリプトでもいいやん
  • Maven は $MAVEN_HOME へインストール済みとする

これを守ることによって新規プロジェクトのビルドシステム構築が 2 分程度で完了できる。実際、今利用してる project.xml もプロジェクト名と依存ライブラリが書いてあるにすぎない。

<?xml version="1.0"?>
<project>
  <id>taskpicker</id>
  <name>taskpicker</name>
  <currentVersion>0.0.1</currentVersion>

  <build>
    <sourceDirectory>src/share</sourceDirectory>
    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
  </build>

  <dependencies>
    <dependency>
      <id>commons-logging</id>
      <version>1.0.2</version>
    </dependency>
    <dependency>
      <id>log4j</id>
      <version>1.2.8</version>
    </dependency>
    <dependency>
      <id>junit</id>
      <version>3.8.1</version>
    </dependency>
    <dependency>
      <id>commons-cli</id>
      <version>1.0</version>
    </dependency>
  </dependencies>
</project>

これだけで依存ライブラリのダウンロード、コンパイルから jar の生成、JUnit のユニットテスト実行と Javadoc 生成と、Java 開発のビルドシステムで必要なほとんどのことが実行できてしまう。

Maven を使う利点はビルド管理者だけでなく利用者側にもある。各種 IDE *1Native のプロジェクトファイルを出力できるので IDE が Maven を直接サポートしていなくても、IDE 本来のプロジェクト管理機能を利用できる。

今も方や Eclipse を使って、方や Meadow で JDEE を利用して開発しているので、依存ライブラリが増えたなどで project.xml が変化したつど、

maven eclipse

と Eclipse 用のプロジェクトを生成し、これもソースツリーに含めて共有している。

Emacs 使いにやさしい JDEE も

maven jdee

で prj.el を生成してくれて至れり尽せりだ。Ant を直接使っていた時は build.xml と prj.el の不整合で困ったりしたが、そんなこととはオサラバ。

依存ライブラリを取得するには、オプション無しで

maven

を実行する。

Maven 自体が依存ライブラリの多い大きなプロダクトなので毎回ビルド時に動かすことに抵抗がある場合は、

maven ant

で build.xml を生成することも可能だ。この build.xml は、Maven ライクに依存ライブラリのダウンロードにも対応してくれる*2

Tags: Java

*1 Eclipse, JBuilder, JDveloper 等

*2 壁を越えるには setproxy タスクを追記する必要あり

忙し目

木曜日は大阪か。

本日のツッコミ(全1件) [ツッコミを入れる]

#  [ボルトだけでない。髄に入れた棒もね。]