Hudsonを使ってマルチプロファイルのプロジェクトを一括ビルドする

Maven2にプロファイルごとの成果物を定義している場合、一度に複数の成果物をビルドしたいことがあります。
この場合、以下のようにスクリプトで書いてもいいのですが、この方法だと管理ができなくなるのでHudsonでやってみます。

#!/bin/sh
mvn -Pprofile1 package install
mvn -Pprofile2 package install

Hudsonのフリースタイルプロジェクトを使う

HudsonにはMaven2スタイルのプロジェクトを作る機能がありますが、このスタイルのプロジェクトは複数のMaven2コマンドを叩けません。
例えば上記のようなコマンドを実行したいとして、Maven2のゴール指定に"-Pprofile1 package install mvn -Pprofile2 package install"と書いても、Maven2が一度に複数のプロファイルを見てくれないのでうまくいきません。そこでフリースタイルのプロジェクトを利用します。

フリースタイルのプロジェクトは、ビルド手順として以下をサポートしています。

ここでMaven2を複数定義することで、複数プロファイルのビルドが可能になります。

成果物を保存する

プロジェクトの"設定" > "ビルド後の処理" > "成果物を保存"にチェックを入れておくと、ビルド履歴からそのビルドで生成された成果物を参照できるようになります。

今回は、jarファイルを成果物として保存する設定にしました。
このプロジェクトをビルドしてからプロジェクト情報を参照すると・・・


ちゃんとプロファイル毎の成果物が保存されているのが確認できますね。

POMファイルに複数のプロファイルを指定する方法

以前の記事に書いてあるので、良かったらそちらを参照してください。
今回使用したpom.xmlは以下のような感じです。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>test</name>
  <url>http://maven.apache.org</url>
  
  <dependencies>
  ・・・
  </dependencies>
  
  <profiles>
    <profile>
      <id>profile1</id>
      <build>
        <finalName>Profile1-RELEASE</finalName>
      ・・・
      </build>
    </profile>
    <profile>
      <id>profile2</id>
      <build>
        <finalName>Profile2-RELEASE</finalName>
      ・・・
      </build>
    </profile>  
  </profiles>

</project>