Hatena::ブログ(Diary)

Fly me to the Juno! このページをアンテナに追加 RSSフィード

2008-02-10

targetのdepends属性はよく考えて使う

targetで指定できるdepends属性ですが、前提条件として実行しておきたいタスクを指定しておくためのものとしてよくつかわれていますよね。タスクをまとめて実行するのには便利と言えば便利ですが、antcallで一つ一つ指定しておいたほうが使いやすかったりします。実行するtargetはantの実行時に指定できるので、ビルドプロセスの途中から実行することもできます。しかし実行するtargetにdepends属性が指定されていると、結局途中まで実行された結果を捨てて、もう一度SCMからソースを取得したりとか、まどろっこしい事になることが多いのではないでしょうか。特にAntスクリプトを書いて、スクリプト自身をデバッグしているような状況ではフィードバックが遅くなるような状況は、ぜひとも避けたい。なので、depends属性で指定するくらいだったら、一つ一つtargetを指定して実行するような、テンプレートとして実行できるtargetを別途用意しておくといいです。

具体的に書くと、

<target name="all" depends="init,build,test,deploy">
</target>
<target name="init">
    プロジェクトの初期化処理...
</target>
<target name="build" depends="init">
    <echo message="buiild start"/>
    <javac ...>
     ...
</target>

じゃなくて、

<target name="all">
    <echo message="Project build start."/>
    <antcall target="init"/>
    <antcall target="build"/>
    <antcall target="test"/>
    <antcall target="deploy"/>
    <echo message="Project build end."/>
</target>
<target name="init">
    プロジェクトの初期化処理...
</target>
<target name="build">
    <echo message="buiild start"/>
    ビルド処理
    <javac ...>
     ...
</target>

こうやって書いてみてわかったんですが、antcallで呼び出す形にしておくと、間に全然別のタスクを挟むことができますね。たとえば途中経過としての時間出力をallターゲットにだけ埋め込んでおくとか…。まぁ、Webアプリケーション開発が全盛のこの時代、mavenを使う人のほうが多いだろうということを予想しつつもこんなエントリを書いてみました。こういうことって達人プログラマーにも書いてあった気がする。

2008-02-08

環境変数をまとめてみたいときに使用するタスク

Antを使っていると、設定している環境変数が正しいものかどうかを確認したくなるときがあります。そういう時は

<echoproperties/>

を使うといいです。らくちん。

複数のプロジェクトをまとめてsvn switchするには

プラグインとか、RCPを作成しているとプラグインごとにプロジェクトを作成するので、複数のプロジェクトをブランチにSwitchしたくなることってありますよね。知らなかったんですが、Subversiveはワーキングセットごとにsvn switchすることができます。なので、ワーキングセットを作っておいて、そこに該当のプロジェクトをまとめておけば簡単にswitchができるんです。switchしている間、時間はかかりますが、一つ一つswitchしないといけないと思い込んでいたので、だいぶ楽になりました。

2007-12-05

-clean

Eclipseの起動オプションに-cleanというものがある。このオプションはプラグインのキャッシュを掃除してくれるとヘルプには書かれているのだけれど、実際にどこを消してくれるのかわからなかった。てっきりECLIPSE_INSTALL_FOLDER/configuration以下をばっさり行くのかと思っていた。config.iniも消えちゃうのでそれはありえない。

で、どこだったかと言うと、ECLIPSE_INSTALL_FOLDER/configuration/org.eclipse.osgi以下だった。この下にはロード中のBundleで利用されたリソースが解凍されたり、Bundle自身の情報を格納していくので、-cleanで削除するときには、ここが消えるのには納得した。

拡張ロケーションを削除するには

Eclipseには拡張ロケーションと言って、ECLIPSE_INSTALL_FOLDER/plugins以外のフォルダをプラグインのある場所として読み込ませることができる。これのうれしいさは、試してみたいプラグインがあったとき、拡張ロケーションを作成しておいて、そちらにインストールするようにしてみる。すると通常のプラグインとは別管理ができるので、いらなくなったときに気軽に削除することができるのだ。もちろんきちんとFeatureまで作成しているプラグインであれば、Featureごとにまとめて管理、削除ができるので、そちらを利用する方が望ましい。けれどもそこまできちんとしているプラグインが多いかと言えば、そうでもない現実がある。

また、一つの環境で複数の環境のEclipseを利用している場合、いつもインストールしておきたいプラグインは拡張ロケーションを用意しておくことで共有することもできる。

拡張ロケーションの作成は更新サイトからダウンロードするときのダイアログに作成ボタンがあるので、そちらで作成することもできるが、簡単なのでまとめてみる。

1.下記の構造を持たせたフォルダを作成する。

extensions/
└─eclipse/
  ├─features/
  └─plugins/
  └─.eclipseextension

2.Eclipseを起動し、Help > Software Updates > Manage Configurationを選び、Eclipse SDK上で右クリック。Add > Extension Locationを選んで、先ほど作成したextensionsフォルダを選ぶ

3.再起動する

4.更新サイトからダウンロードするときに先ほどのフォルダを選んだり、直接プラグインを追加する

手動で行うにはこんな感じ。で、一度作成した拡張ロケーションはDisable(無効)にすることはできてもManage Configuration上から削除することができない。どうやってやるんだろうと思っていたら案外簡単だった。

Eclipseの設定はECLIPSE_INSTALL_FOLDER/configuration以下に収められているが、先日記載したとおり、ECLIPSE_INSTALL_FOLDER/pluginsフォルダ以下の全プラグインのロードはorg.eclipse.updateというプラグインで行われている。このECLIPSE_INSTALL_FOLDER/configuration/org.eclipse.update以下にplatform.xmlというファイルがあり、こちらで拡張ロケーションの設定が追記されている。なので、ここからこそっと削除してあげれば、Manage Configuration上から消えてくれる。