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」とかは嫌いです。