ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

ファイル内容を比較して同期をとるantタスク

2007-03-09 23:48:40 | PG(Java)

ファイルの内容を比較して同期をとるantのタスクを作ってみた。ファイル内の各行に正規表現を適用して、異なるデータでも同じパターンとして判断することが出来る。
ant1.6用だけど、eclipse3のantも1.6だから問題ないでしょう。

使用目的その1は、javadocのコピー
javadocを生成すると全ファイルが作り直されるが、日付のみ変更されたファイルが多くて、実際に表示される内容が変わっているファイルは少なかったりする。今までは生成されたファイルを全て公開用ディレクトリにコピーしていたけど、そこから全ファイルをftp転送するのは時間がかかるんだよね(嘆)
このタスクを使って内容が変更されたファイルだけをコピーできるようになったので、効果抜群♪

使用目的その2は、CVSの作業ディレクトリ間のコピー
ブランチのファイルをトランクに反映させるような場合、「CVS」という名前のディレクトリ内はそのままにして、その他のファイルだけをコピーしたい。
さらに、ブランチとトランクではCVSキーワードの出力内容が異なっているので、それは無視して、内容が実質的に変わっているファイルだけを対象にしたい。
これも出来るようになった♪


ant1.6には、syncという ディレクトリの同期をとる為のタスクが追加されている。でも比較せずに残したいファイルが指定できなかったりして、やりたい事が微妙に出来なかった。
そんな訳でsyncを参考に独自のタスクを作ったんだけど、これがまた例によって拡張性が無くて(嘆)
基本的には内部クラスを継承してメソッドを1つオーバーライドするだけだったんだけど、そのインスタンスがprivateメンバーだった為に全てのメソッドが使用不能…。

「antは拡張性を考えてある」と謳っているようで、確かにcopyタスクなんかはプログラムの中で作り出して呼んだりすることは出来るけど、クラス自体を継承することまで考えてあるのは少ないような…。


それにしても正規表現って、書いて見ると分かりづらい(苦笑)
CVSキーワードを示す正規表現なんて、すごいことになってる(爆)


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« VB.NET2003 WebBrowser | トップ | 正規表現つきファイル比較 »
最新の画像もっと見る

コメントを投稿

PG(Java)」カテゴリの最新記事