nDiki : Ant

2001年11月27日 (火)

12:45 Ant の apply で引数を加工するには?

Antbuild.xml 中で apply task を使う。 この時 <targetfile /> をちょこっといじって引数にしたいんだけど(具体的には ' で囲いたい)、調べてもようわからん。

18:20 やっぱり……

予想通り、シェルスクリプトあたりでラッパー書くのが一番楽そう。 なんかすっきりしないけど。

[ 11月27日全て ]

2001年12月4日 (火)

17:15 Checkstyle を ant に追加

CheckstyleJava のコードのスタイルや Javadoc 用コメントのチェックをする Java クラス(コマンドラインツール / Ant タスク)。

Debian のパッケージにはまだなっていないので、公式サイトからとってきて .jar ファイルを /usr/local/share/java に放りこむ。 必要なライブラリの ANTLR と Regexp は Debian パッケージになっているので入れとく。

コマンドラインでちょっと試した後 build.xml にターゲット追加して統合。 これで JUnit とあわせて、コードの品質があがるようにがんばろ。

[ 12月4日全て ]

2001年12月5日 (水)

[ Java ] 22:30 Cocoon2 はどうかな?

最近、本サイトの生成フレームワークを一新すべく模索中(現在は XML + 自作 Perl スクリプト)。 今の最有力候補は XML + Ant + Xalan。 他にいろいろ見ていたら、Cocoon 2 はどうかなと。 XML から XSLT 他を用いて HTML とか WML とかを生成する server application なんだけど、ローカルで立ちあげて Wget とかでローカルに静的なファイルとして落とせば、それをサーバに置けるんじゃないかなぁ。 すぐ思いつく問題は、

  • 「make 的(必要なファイルのみの)更新」(毎回すべて更新されるとサーバへのアップロードで困る)、
  • SSI がちょい面倒?」(Coccoon 2 では処理しないでそのまま出力させる)、

「コンテントネゴシエーションまわり」(en, と ja を別々のファイル名できちんととりだせるか)

等々。ドキュメントだけ静的にアーカイブしたものとかあるから、静的なファイルに落とせるんだろうなとは思いつつ。 とりあえず、インストール。 まず先に Tomcat

 cd /usr/local
 tar zxvf jakarta-tomcat-4.0.1.tar.gz

次 Cocoon 2

 cd /usr/local
 tar zxvf cocoon-2.0-bin.tar.gz
 cp /usr/local/cocoon-2.0/cocoon.war /usr/local/jakarta-tomcat-4.0.1/webapps/

Tomcat がデフォルトで 8080 ポートをつかうのだが WWWOFFLE が既に使っている。 Tomcat の方をずらすより、WWWOFFLE の変更の方が勝手がわかるのでそちらをずらす。 で

 /usr/local/jakarta-tomcat-4.0.1/bin/startup.sh

で起動。http://localhost:8080/cocoon/ に Galeon でアクセス。 一発目は非常に遅い。他のページも一度目は閲覧は遅いがキャッシュが効くので次からはそれほどでもない。

とりあえず、ドキュメントを読んでいろいろ調査。

[ 12月5日全て ]

2002年1月3日 (木)

13:00 Ant 用タスク styler

Ant 組み込みの style タスクの強化版 styler を使って 携帯電話向けのページをメンテしようかと。

styler は style に比べて mapper が使えたり XSLT のパイプラインができたりしてお便利。

しかし……XSLファイルでの xsl:output がうまく効かない。styler の type オプションが優先されているようだ。 さてどうするか。

[ 1月3日全て ]

2002年6月1日 (土)

去年の今ごろ

2001年6月1日より。

  • 岩本町・東神田ファミリーバザール
    • 今年も昨日から開催されている。昨年行ってみて、どうも自分の趣向と違うようだったので今年は見にいかなかった。
  • Doxygen で Document を Generate
    • これはアタリ。今も利用している(タマにだけど)。Ant から doxygen を呼び出す extension や、Emacs から利用するための doxymacs 等いろいろ便利なツールもある(後者はまだ使った事なし)。
[ 6月1日全て ]

2002年11月15日 (金)

Eclipse 2.0.2

遅ればせながら、ればせながら、Eclipse

2.0.2 (+ NLS SDK 2.0.1 Translations) を Debian GNU/Linux sid ノート PC に入れてみる。 ふむ。Forte より確かに軽快。 しかし GUI Builder はついていないのか。 それだったら、通常は Emacs + Ant で十分だな。

リファクタリング支援機能は便利そうなので、8割 Emacs で書いて気分転換に Eclipse で修正するのが吉か。

[ 11月15日全て ]

2004年7月24日 (土)

WindowsGNU Make

Windows だと nmake がやっぱり主流だろうか。 しかし GNU Make とは違う点が多く、使い分けるのも面倒。 かといって Ant というのも面倒。

ということで気軽に使える Windows 用の GNU Make を探す。 Cygwin 版は共同作業者に入れてもらうのが面倒なので却下(Makefile から呼ばれるコマンド群もLinuxと同様のものが入るのでこちらの方が便利といえば便利ではあるのだが)。

MinGW版が 3.80 をポーティングしているし単体でも動きそうなのでこれを試してみることにする。

mingw32-make-3.80.0-3.exe を取ってきて実行。make そのものだと思っていたがマニュアル等を含むインストーラだった。 一旦インストールして、mingw32-make.exe をコピーしてアンインストール。 mingw32-make.exe 単体で動作するので取り扱いが楽でよい(必要なら make.exe にでもリネーム)。

Windows 特有の問題があるかどうかは今後使ってみてチェックだな。

[ 7月24日全て ]

2004年9月3日 (金)

YAMLJava実装を書く

プライベートで書く事にした。 Eclipse 3.0 も入れたし、即実装開始。 えーと、まずはBOMの処理か。

しかし今だに Java のパッケージングの慣習がわからない。 make dist にあたるものは無いのか? まだ Ant ではスタンダードなスタイルは確立されていないの?

[ 9月3日全て ]

2005年4月20日 (水)

SConsGNU Autotools のかわりになるか

NSIS のサイトによるとビルドに「SCons」を使うようしたらしい。

  • クロスプラットフォーム
  • AutoconfAutomake と同様の機能を統合
  • LaTeX もビルトインサポート

と興味深いツールになっているようだ。

現在プロジェクトLaTeXベースのドキュメント生成には GNU Make を使っているのだが、UNIXWindows の両方でビルドできるようにするには ComSpec 環境変数の有無で使用するコマンドを切り換えたり等いろいろ面倒なので、代替ツールとして使えないかなと。

基本的な機能は Make に対する改良がなされているようであるし、コピー等ファイル操作も SCons 自体がもっているのでクロスプラットフォームでビルドできるようにするのも楽そうだ。

一方 Autoconf 系の機能については、インストール済みのライブラリの検出や実装レベルのチェック等を実装しているようである。 make check や make dist、make install 等にあたるターゲットに関する機能(あるいは規約)のようなものは無い。これは非常に残念。 結局自分が Ant を使わなくなったのも GNU Autotools にあるこれらの機能に欠けているからであるし。

実は私がPerl が好きな理由の一つとして、これらサポートが充実しているという点がある。Perl では ExtUtils::MakeMaker (あるいは Module::Build)があり、ビルドからテスト、ソースパッケージのパッケージングまでフレームワークが整っている。

SConsPython ベースで、Makefile にあたるファイルも Python スクリプトである。 SCons が影響を受けた Cons は Perl ベースであったのだが、既に2001年5月ごろから開発が止まってしまっている。残念。

ということで Make の代替には使えそうであるが、GNU Autotools と同じようなことをするにはいろいろ手をかけないといけないといった印象。

[ 4月20日全て ]

2005年8月24日 (水)

Module::Buildソースパッケージング

ExtUtils::MakeMaker

私が Perl が好きな理由の一つに、標準でExtUtils::MakeMakerという Makefile ジェネレータがついているところである。これを使って Makefile.PL を書くと

 perl Makefile.PL
 make manifest
 make
 make test
 make dist

で <pacakge>-<versionno>.tar.gz というソースパッケージを作ることができ、

 tar zxvf <pacakge>-<versionno>.tar.gz
 cd <pacakge>-<versionno>
 perl Makefile.PL
 make
 make test
 make install

という手順でインストールする事ができるようになる。 パッケージの作り方が確立されているので、容易に新しいパッケージを開発しはじめられる。

逆に Java でプログラムを書くのが億劫なのは、このあたりの準備が面倒だからである。 Ant を使っても結局ここら辺自分でやらなければならないし。

ちょっとしたアーカイブの作成

ちょっとしたパッケージを作りたいと思うことは良くある。 例えばいくつかのデータファイルと、READMEファイルなんかをひとまとめにしてアーカイブにするとか。

本当にちょっとしたであれば、手動でアーカイブすれば良いのだが、

  • アーカイブしたいファイル群がバージョン管理下にあって、CVS ディレクトリや .svn ディレクトリがある (除外してアーカイブする必要がある)
  • 同じディレクトリにある、作業用のファイルはアーカイブしたくない (除外してアーカイブする必要がある)
  • アーカイブする前に、チェック用のリグレッションテスト一式を走らせたい (リグレッションテストをかけられるようにする)
  • UNIX でも Windows でもアーカイブ化できるようにしたい。

あたりを考慮しなければならない時は面倒くさくなってくる。

自動化としては

あたりがぱっと思い浮かぶ。 しかし、最初の2つは毎回同じようなものを書くのが面倒だし保守もしにくい。 GNU Autotools はちょっとごっつすぎだし、Windows での環境構築も面倒。

ExtUtils::MakeMaker の欠点

ということで最初は ExtUtils::MakeMaker を使うという線で考えてみた。 もともと Perl モジュール用で汎用用途にはちょっと邪魔な振舞いもあるが、使えないことはないと思う。 しかし make (GNU Make あるいは nmake など) に依存しているという欠点がある。

Module::Build

ということで ExtUtils::MakeMaker の代替である Module::Build ベースで汎用用途に使えないか検討してみた。こちらは pure Perl で make を必要としない。

Module::BuildPerl モジュールビルドにあわせた振舞いがあるものの、ちょっとカスタマイズすれば使えそうだ。 で、いろいろいじった結果、次のような感じにすると使いやすそうだ。

 use Module::Build;
 my $class = Module::Build
   ->subclass(class => 'NonmoduleBuilder',
              code => q{
                        # Don't make blib
                        sub ACTION_code {};
                        # Don't make blib
                        sub ACTION_docs {};
                        # Don't make META.yml
                        sub ACTION_distmeta {
                          # no warning on ACTION_distdir
                          $_[0]->{metafile} = 'MANIFEST';
                        };
                        # Don't add MEATA.yml to MANIFEST
                        sub ACTION_manifest {
                          $_[0]->{metafile} = 'MANIFEST',
                          $_[0]->SUPER::ACTION_manifest(@_);
                        };
                       });

 # Set your archive name and version.
 $class->new(dist_name => 'mypackage',
             dist_version => '1.0.2',
             )->create_build_script;

カスタマイズした部分は以下(Module::Build 0.26 で動作確認)。

  • Perl モジュールビルドに特有の blib ディレクトリを作らないようにする。
  • META.yml を生成しないようにし、アーカイブに含まれないようにする。

上記のようなファイルを Build.PL という名前で作っておけば

 perl Build.PL
 ./Build manifest
 ./Build
 ./Build test
 ./Build dist

等として、アーカイブ作成が容易にできるようになる。

しばらくこの方法でいろいろ試してみることにしてみよう。

[ 8月24日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.059527s / load averages: 0.67, 0.59, 0.65
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker