前のエントリでproject.propertiesにmanifest.fileというプロパティを設定すれば万事OKみたいな感じで書いたけど、antタスク内でmanifest.mfを生成する場合は、ちょっと都合が悪かった。
nbproject/build-impl.xmlを見ると、manifest.fileで指定したファイルの有無を-do-initタスクで確認してるっぽい。
ってことは、-pre-jarとかの段階で作ったmanifest.mfは無意味!!ってことになる。
いとかなしきことかな。
ということで、-pre-initでファイルだけでも作っておかないといけないことになるけど…
-pre-initでは、まだproject.propertiesが読み込まれてないので、つっこんだことをするのはちょっと辛い。
ということで苦肉の策をとった。
- プロジェクトフォルダ直下に空のmanifest.mfを作成
- nbproject.propertiesにmanifest.file=build/manifest.mfを追加
- -pre-initタスクを作成して下の内容を追加
<target name="-pre-init">
<mkdir dir="build" />
<copy todir="build">
<fileset dir="${basedir}" includes="manifest.mf" />
</copy>
</target>
-pre-jarを作成して下の内容を追加
<tstamp>
<format property="build.time" pattern="yyyy/MM/dd HH:mm:ss.SSS" />
</tstamp>
<target name="-pre-jar">
<manifest file="${manifest.file}">
<attribute name="Created-Timestamp" value="${build.time}" />
</manifest>
</target>
-pre-initでは${~~}が軒並み使えないので、仕方なくハードコーディングしている。
とりあえず、これで無事出来てる。
後は、SVNとかで共有してもビルドの度にmanifest.mfが更新されてだるいことにならない。
素敵だ。