ant -find build.xml

サブフォルダから上方にある build.xml を探すために ant の -find オプションが使えることを知りました。これまでは、ant と make を併用していたのですが、これで make とは決別しました。
flex4(air)、java のプログラムを emacs(meadow3.0)で行っているので、emacs の compile-command は修正しましたが、build.xml は従来のままで使えました。しかし、clean (バックアップファイルなどの削除) はサブフォルダ内も探索できるように変更となりました。
.emacsを除く、ビルド環境は 記事 2009.10.20 Loggerソース一式(newbieLogger-20091023.lzh)にあります。

.emacs の変更

コンパイルコマンドを変更しました。キー割り当ても関連して変更しています。これらの設定で、xmlmxmljavaActionScript 等で Control+c Control+c でコンパイルを行えるようになります。^c^cはコメント・リージョンが既定でしたが、僕はめったに使わないので、^c^c に割り当てました。

;; グローバルキー割り当て
;;   コンパイル不要な関連ファイル(xml,mxmlなど)でも実行
(global-set-key "\C-c\C-c" 'compile)

;; java モードのキー割り当て
(add-hook 'java-mode-hook
          '(lambda ()
            (local-set-key "\C-c\C-c" 'compile)))

;; actionscriptのキー割り当て
(add-hook 'actionscript-mode-hook
          '(lambda ()
             (local-set-key "\C-c\C-c" 'compile)))

;; コンパイルコマンド
(setq compile-command "ant -find build.xml")
build.xml 変更箇所

サブフォルダ内 のバックアップファイルも削除できるように変更しました。ant のマニュアル(File Task)に載っています。

  <target name="clean">
    <delete verbose="true">
      <fileset dir="." includes="**/*~" defaultexcludes="no"/>
    </delete>
  </target>
フォルダ構成の例

Application.java を修正した後ビルドを行うと、ant に -find オプションが付いていれば、カレントフォルダに build.xml がない場合に、上方にある build.xml を探してビルドしてくれます。

ActionScriptbuild.xml
  1. daemon : fcshDaemon 起動
  2. build : ビルド(fcsh)
  3. run : adl.exe -nodebug でプログラム実行
  4. debug : デバッグビルド(fcsh)
  5. pack : air
  6. clean : バックアップファイル削除
  7. quit : fcshDaemon 終了
  8. info : fcsh のターゲット一覧
  9. clear : fcsh のターゲット削除
Javabuild.xml
  1. build : ビルド
  2. jar : jar化
  3. dist : jarを c:/Program Files/Red5/WEB-INF/lib/xxxxx.jar にコピーする
  4. clean : バックアップファイル削除

うーん。build.xml 内に description で埋め込めるらしいのですが、まだやったことない・・・