新たなるビルドツール

Javaのビルドツールといえばantかmavenだと思います。多分。

antは自由度が高くて、いかようにもかゆいところに手が届く反面、毎回一からビルドプロセスを構築するのは面倒くさい(NetBeansの場合はantと完全にビルドプロセスが統合されているので多少ましかもしれませんが)し、大きくなってくるとbuild.xmlのメンテとかも面倒くさい。

mavenは定型のビルドプロセスをもっていて、推移的な依存性の解決とかも結構便利な反面、かゆいところに手を届かそうとすると結構面倒くさい。Eclipseの場合だと、WTPとの相性が悪いのがさらに面倒くさい。

一長一短、どっちもどっちです。

・・・

なんだかEclipseNetBeansの関係に似ていますね。

それはさておき。

そんな訳で、最近はもっぱらantとmavenを併用で利用することが多いです。antをベースに、antタスクからmavenのゴールを実行して依存性の解決とかを行ったりすることが多いです。というか、maven側にしても、


こんな、POMを元に(?)antのbuild.xmlを生成するようなプラグインを用意しているあたり、私のような使い方を想定しているような気がしないでもありません。

そんなantかmavenかだなんて日々にもちょっと疲れてきたので、もっと素敵てエレガントなビルドツールがないものかとぐぐってみたのですが、どうやらあるらしいじゃないですか。新しいのが。

Goslingというらしいですね。といっても、それはジェームスでは無くてひよこという意味らしいですけど。期待に胸を躍らせて以下の開発元サイトに行ってみたところ、

・・・

Mini FAQしかない

そうか、プロジェクトを立ち上げて間もないのかも?と、一瞬思ったのですが、よくよく見ると最初の方のzdnetの記事は2007年5月のもの。

・・・

あんま開発進んでないんですね・・・がっかり。

というか、別に全く新しいビルドツールを作らんでも、もっとantとmavenを上手く融合させて両方のいいとこどりをしてくれるだけでもいいんですけどね、個人的には。

WindowsにMavenで環境変数の罠

なんとなく、今日は二本立てです。

完璧に一覧にまとめられているサイトはあまり見たことが無いのですが、実はmavenにはデフォルトで定義されている環境変数的な物があったりします。

この辺とかは比較的よくまとめられているような気もしますが、どうやらまだまだあるみたいです。

例えば、${basedir}はpom.xml自身が存在しているディレクトリに変換されますし、${user.home}はログインユーザのホームディレクトリを表していたりします。

故に、先日のJMockitmaven経由で実行する際の設定も、

 <build>
        (略)
        <plugins>
            (略)
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <argLine>-javaagent:${basedir}/lib/jmockit.jar</argLine>
                </configuration>
            </plugin>
            (略)
        </plugins>
        (略)
    </build>

なんてプロジェクトリレイティヴな書き方をして、プロジェクトをチェックアウトしさえすれば(別途JMockitを各クライアント毎にダウンロードしとかなくても)動くように設定することも可能だったりするのですが。

これがWindowsだと

さらに、NetBeansだと

油断すると、${basedir}が「Documents and Setting」の下とか「Program Files」の下とかにあったりするんですよね,デフォで。最近だいぶ対応されてきたけど、まだまだディレクトリやファイル名にスペースが入ってると落ちるjavaプログラムは多い。

maven(の、Surefire Plugin)も、そんな落ちるプログラムの一つのようです。

ってか、ディレクトリ名にスペース使う方が悪いような気もするのだが・・・

というわけで、私は正直なところ「Documents and Setting」とか「My Document」とかは嫌いです。