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>
こちらの方が、一か所で指定できるので良いかもしれない