文系プログラマによるTIPSブログスマートフォン用の表示で見る文系プログラマによるTIPSブログ文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。antTwitterGooglePocketプロジェクトの都合上どうしてもantになってしまう場合の対処法です〜さて、今日は旧石器時代のビルドのお話です。最近私はソースコード全般が非常に古いプロジェクトを担当しており、そのプロジェクトのビルドがantで行われています。このantは非常に歴史が古く、xml地獄の冗長なビルドシステムで、当然そう簡単にjsのminify等は行えません。今回は化石のようなantを使って、意地でもjsとcssのminifyを行ってみたいと思います。antからjsとcssのminifyが行える事。ライブラリを使ってもよい。taskの実装があること。combineはせず、再帰的にファイル毎にminifyする。この中で、combineしない件が実は曲者で、標準で行えるものはほとんどありません。候補は以下があります。Hosting.googleのは再帰的に行なえないのと、antタスクがUnsupported化されてしまったので却下。JSMinは一体いつの時代のライブラリだよ!!という事で却下。YUIは全ての要件を満たしているので、YUIに決定です。yui-compressor-ant-taskでminifyを行う!yui-compressor-ant-taskはバイナリが提供されていないので、ソースをDLして自分でコンパイルする必要があります。mercurialでソースをcloneするいきなりハードルが高いですね。gitではなくmercurialです。macのMavericksなら最初からmercurialがインストールされています。作者のブログにチェックアウト方法が書いてあります。yui-compressor-ant-taskhttp://www.simonbuckle.com/2011/02/20/yui-compressor-ant-task/このコマンドをそのまま実行するわけですが、一旦eclipseにjavaプロジェクトして取り込むので、以下のようにしてください。unresolvedeclipseでjavaプロジェクトを用意する先ほどのワークスペース「/Applications/eclipse/eclipse_treetips/workspace」に「yui-compressor-ant-task」というプロジェクト名でjavaプロジェクトを作成して下さい。先ほどcloneしたフォルダ名と競合しますが、構わず作成し、F5でリフレッシュします。こんな感じになります。ant.jarに依存しているようなので、apache-antのサイトから最新のバイナリをDLします。Distributions圧縮ファイルを解凍し、「ant.jar」をlibにコピーし、ビルドパスに追加します。yui-compressor-ant-taskをカスタマイズするyui-compressor-ant-taskは実は再帰的にminifyできません。再帰的に処理をしようとして、フォルダが存在しないエラーが発生してしまいます。例外エラーを握りつぶしてantのログを出力されるので、エラー内容が解らないので、これも合わせて修正します。いってもこの1ファイルしかjavaファイルはないんですけどね。}以下のようにして下さい。}これでIOExceptionの内容(フォルダが存在しない等)が解るようになります。}を以下のように書き換えます。}これで出力先フォルダが存在しない場合にフォルダを生成してくれます。出力しようとして、result/childフォルダが存在しないエラーになってしまいます。これを回避するため、前述のフォルダ生成処理を入れました。ビルドしてjarを生成する/yui-compressor-ant-task/build.xmlを実行します。targetのdefaultが「compile」になってますがこれは罠で、「pachage」を指定して下さい。これで「dist/yuicompressor-taskdef-1.0.jar」が生成されます。