Force.comで開発していく上で、Static Resourceファイルを作成するのは手動で行うには面倒です。
Static Resourceファイルはファイル拡張子だけ変更してアップロードしてしまう方法もありますが、そうしてしまうとどんどんファイル数が多くなってしまいので、ZIP圧縮でファイルを一つにまとめてしまったほうがすっきりします。
とはいえ、JavaScriptやCSSを変更するたびに手作業で 不要ファイルを除去→ZIP圧縮→ファイル名変更 するのはさすがに厳しいです。そこで、AntでStatic Resourceファイルを作成させてしまえばいいんじゃないか、というわけです。
前提とするファイル構成
ここでは下記のようなファイル構成となっているとします。
[プロジェクト]
├ build.properties
├ build.xml
├ [build](自動で作成する)
├ [resource]
| ├ [SampleResource]
| └ [...]
└ [src]
├ [staticresources]
└ [...]
Antの呼び出し部分
以下のようにarchiveタスクにリソース名(SampelResource)を指定すると、src/staticresource/SampelResource.resourceを作成するようにAntマクロを作成してみました。中間ファイルとしてbuild以下にZIP圧縮前のファイルをコピーしています。
<target name="make">
<archive resource="SampleResource" />
</target>
Antマクロ
実際にStatic Resourceファイルを作成しているAntマクロは下記のようになっています。属性として指定されたリソース名に基づいて処理を実行します。一旦build以下にStatic Resourceに含めたいファイルのみコピーしてからZIP圧縮していますので、不要なファイルを開発組織にデプロイすることもなくなります。
<macrodef name="archive">
<attribute name="resource" />
<sequential>
<echo message="compress: @{resource}" />
<delete dir="${build.dir}/@{resource}" />
<copy todir="${build.dir}/@{resource}" preservelastmodified="true">
<fileset dir="${resource.dir}/@{resource}">
<patternset>
<include name="**/*.gif"/>
<include name="**/*.png"/>
<include name="**/*.js"/>
<include name="**/*.css"/>
</patternset>
</fileset>
</copy>
<zip
basedir="${build.dir}/@{resource}"
destfile="${src.dir}/staticresources/@{resource}.resource"
/>
</sequential>
</macrodef>
元ファイルは こちら です。
まとめ
これでStatic Resourceファイルを手軽に作成できるようになりました。
本格的にやるのであればGruntなどを使ってもいいところですが、インストールするものが多くなってしまうので、Antでちゃちゃっとやるのもいいと思います。
Enjoy Deploying!