Maven プロファイル指定ビルドと、生成物の名前

Maven profile を使用してビルド対象リソース管理しているプロジェクトで
ビルドする JAR名も合わせて変更したい。という要求

通常デフォルトのMaven がビルドするJAR は、artifactId 名 + "-" +バージョン番号 + ".jar" という書式で
JARファイルが作成される。

mvn コマンドオプションで直接指定する方法
例) -Djar.finalName= オプションで指定する。
プロジェクト名、アーティファクトID名も同じ名前の alpha を "custom-jar-name" JAR名でビルド

mvn clean package -DskipTests=true -pl alpha -Djar.finalName=custom-jar-name

profile を指定した JAR 作成で、profile名に沿って JARファイル名にしたい場合、
例)親子関係の Maven pom プロジェクトと Maven サブモジュール の構成とする。

Maven pom プロジェクトの pom.xml のプロファイル記述

<packaging>pom</packaging>
<modules>
  <module>alpha</module>
</modules>

<profiles>
   <profile>
      <id>develop</id>
      <build>
        <resources>
          <resource>
            <directory>src/main/resources-develop</directory>
          </resource>
          <resource>
            <directory>src/main/resources</directory>
          </resource>
        </resources>
      </build>
    </profile>
</profiles>

これは、サブモジュールのプロジェクトで、デフォルトのリソースは、src/main/resources 配下のみを使用
プロファイル名=develop では、src/main/resources-develop 配下を追加して使用する。
同じソース名は、プロファイル指定が使用されるようにビルドされる。

サブモジュール alpha プロジェクトの pom.xml では

プロファイル名に沿った JAR ファイル名のプレフィックスを定義して
jar.finalName プロパティを定義することで、-Djar.finalName= オプションで実行するのと同じ効果にする。

<profiles>
   <profile>
      <id>develop</id>
      <properties>
         <jarprefix>Dev-</jarprefix>
      </properties>
   </profile>
</profiles>

<properties>
    <jarprefix></jarprefix>
    <jar.finalName>${jarprefix}${artifactId}-${project.version}</jar.finalName>
</properties>

プロファイルを指定しないビルド時の為に、<properties> で、 <jarprefix></jarprefix> が必要である。

ビルド実行は以下のようになる

mvn clean package -DskipTests=true -pl alpha -am

alpha-0.0.1-SNAPSHOT.jar が作成される。

mvn clean package -DskipTests=true -pl alpha -am -P develop

Dev-alpha-0.0.1-SNAPSHOT.jar が作成される。

サブモジュールの pom.xml で指定しないで、親プロジェクトの pom.xml で指定する場合、

  <modules>
  	<module>alpha</module>
  </modules>

<properties>
    <jarprefix></jarprefix>
    <jar.finalName>${jarprefix}${artifactId}-${project.version}</jar.finalName>
</properties>
<profiles>
   <profile>
      <id>develop</id>
      <build>
        <resources>
          <resource>
            <directory>src/main/resources-develop</directory>
          </resource>
          <resource>
            <directory>src/main/resources</directory>
          </resource>
        </resources>
      </build>
      <properties>
         <jarprefix>Dev-</jarprefix>
      </properties>
    </profile>
</profiles>

こちらの方が、一か所で指定できるので良いかもしれない