木曜日, 8月 27, 2009

[Scala] Antでfscを

Scalaはコンパイルが遅いので(Javaに比べて遅いかどうかは、Java開発をほぼしたことがないので不明)、Antでscalacタスクではなくfscタスクを使えるようにした。段どりは以下。

fscだけをコマンドで実行し常駐させる(helpが出る)
・上がったデーモンのポート番号を調べる(※1)
・それをファイルに書く(※2)
・build.xmlのfscタスクでそれを指定(serverオプションにて)

(※1)は以下にポート番号でファイルができるのでそれを見ます。
d:\scala-2.7.5.final\var\scala-devel\scalac-compile-server-port

不思議なことに、fscのデーモンさんはPCをスタンバイにすると死んでしまうようなので、そうなると(※2)を毎回やらなくてはならず不便。。

今日AntでJavascript実行ができることに気がついたので、(※1)も(※2)も、それで何とかできると思います。

追伸:
今のところ致し方無い。そもそもWindowsじゃなければ、こんな面倒なことはないのだけど。

追伸2:
以下でポート番号を動的にantから取れそうです(参考にさせて頂いたページ)。
 <target name="fileList">
<script language="javascript">
<![CDATA[

ls();

function ls() {
var curDir = (new java.io.File("/scala-2.7.5.final/var/scala-devel/scalac-compile-server-port"));
var list = curDir.listFiles();
for (var i = 0; i < list.length; i++) {
print(baseName(list[i].toString()));
}
}

function baseName(path) {
// var sep = environment["file.separator"];
var sep = "\\";
var i = path.lastIndexOf(sep);
return path.substring(i + 1);
}

]]>
</script>
</target>