今まで行ってきた各種チェックのエラー有無判定とJarファイル作成部分についてです。
何も考えずにJUnit/CheckStyle/FindBugsを使うと
・JUnit/CheckStyleでエラー検知したら、それ以降の処理が実行されなかった
→「FindBugsのレポートが作られない」とか。
・FindBugsでエラー検知したのに、ビルドエラーにできない
といったことになります。
これだと、エラーを見逃してしまうことになるので、
・エラーチェックは全て実行する
・何かしらエラーを検知した場合にはビルドをエラーにする
ようにしないといけません。
そのために、今までの各種チェックタスクで
・エラーを検知しても処理を継続する
・エラーを検知した場合のみ、プロパティをセットする
というオプションを指定していました。
処理の継続はチェック処理のタスク内で完結していますが、「何かしらエラーを検知した場合にはビルドをエラーにする」ために、プロパティがセットされていればAntをエラー終了させる処理を追加します。
最初の「echoproperites」タスクは、ビルドログファイルにエラーを検知したかどうかを簡単に出力するために入れています。「*.failed」が存在した場合、こんな感じで出力されます。
最初の2行はヘッダ部、残り3行がプロパティ名とセット内容になります。
全て正常であれば、ヘッダ部しか出力されません。
次の「condition」タスクで、Antをエラー終了させるかどうか判定しています。
この場合、junit.failed/findbugs.error.failed/findbugs.warnings.failed/findbugs.warnings.failedのどれかがセットされていれば、metrics.failedをセットすることにしています。
最後に、「fail」タスクでmetrics.failedがセットされていればAntをエラー終了させています。
今回は、この後にJarファイル作成(make-jar)を動かすようにしていますので、エラーがあったときにはJarファイルを作成しません。
残りはJarファイル作成部分です。
特別なことはしていません。
・出力先をBinaries配下に指定し、TFSのビルド画面にある「格納フォルダを開く」から参照できるようにする
・マニフェストファイルに、ビルド番号をセットする
こんな感じでセットされます。
長々と書きましたが、TFS+Javaでのビルド自動化の基礎はこんな感じかなと思ってます。
気が付いた方がいらっしゃるかもしれませんが、今回の内容ではBuild Extensionsを追加するだけでTFS側に対する特別な設定/定義ファイルの変更ありません。
フォルダ構成に気を付ければ、Antを作成するだけでTFSでもこれだけできるということです。
なお、TFSのビルド定義からAntのターゲットを指定したいという方は「TFSでのJavaビルド環境作成:AntのTarget指定方法」を参考にしてみてください。
最後ですが、「VS2012 Premium/Ultimate+TFS 2012」だとちょっとした設定だけでこれだけのことができるので、どれだけ強力な環境かということも思い知りました。
(ようは.NETで開発したい orz)