TFSでのJavaビルド環境作成:javacタスクで使用するフォルダの指定

今回は、Antのjavacタスクで使用するソースファイル/クラスファイルのフォルダ指定についてです。
TFSでビルドを実行すると、指定された状態(通常は最新バージョン)のファイルを自動的に取得します。取得先は、ビルドエージェント作成時に作業ディレクトリに指定したフォルダになります。
Buildjava35

Buildjava36

クラスファイルなどのビルド生成ファイルの出力先についてはいろいろ考えがあると思いますが、今回はTFSのビルド結果出力フォルダに出力したいと思います。

javacタスクでは、ソースファイルのフォルダは「srcdir」属性、クラスファイルの出力先フォルダは「destdir」属性で指定できますが、この内容をTFSで使用するフォルダと連動させます。
実は、MSBuildからAntを実行する際に、TFSBuild.projでTFSで使用する情報の一部がプロパティとしてセットされています。
Buildjava37

デフォルトでセットされているのは以下の情報です。
 BinariesRoot
 BuildDefinitionName
 BuildDefinitionUri
 BuildDirectory
 BuildNumber
 DropLocation
 LogLocation
 SourceGetVersion
 TestResultsRoot
 TeamProject
 WorkspaceName
 WorkspaceOwner
各項目の内容については、MSDNのTeam Foundation ビルド アクティビティ、またはIBuildDetail Propertiesに記載されています。
但し、「LogLocation」はなぜかセットされていません。(今回、これが結構痛いです)

この情報を組み合わせてソースファイル/クラスファイルのフォルダ指定を行いたいのですが、Javaプロジェクト名はTFS側では管理されていないので、MSBuildの引数に追加し、Antに渡すプロパティ情報にも追加します。
以下の内容で「JavaProjectName」というプロパティ指定をTFSBuild.projに追加し、修正内容をチェックインします。
Buildjava38

TFSビルド定義の方は、MSBuildの引数に「JavaProjectName」を追加し、保存します。
Buildjava39

次に、EclipseからBuild.xmlを以下のように変更し、チェックインします。
Buildjava40
変更内容は
 ・javacタスクのsrcdir属性に指定するソースフォルダをsrcbaseプロパティとして組み立てる。
 ・javacタスクのdestdir属性に指定するクラスファイル出力フォルダdestbaseプロパティとして組み立てる。
 ・destbaseプロパティにセットしたフォルダをjavacタスク実行前に作成する
になっています。
※クラスファイルの出力先がTFSのビルド結果出力フォルダになっていませんが、TFSのビルドが完了したときに、「${BuildDirectory}/binaries」配下の内容がTFSのビルド結果出力フォルダにコピーされます。

これで、Eclipseからビルドを実行すると、.classファイルがTFSのビルド結果出力フォルダに出力されます。
Buildjava41

Buildjava42

Buildjava43

Buildjava44

次は、ソースファイルの静的解析ツールであるFindBugsをビルド時に実行してみます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください