私はしばらく探していましたが、ネストされた Git サブモジュールを使用するときに Maven モジュールをリリースするための実用的なソリューションやガイド/チュートリアルを見つけることができませんでした。
私たちは、ビルドを成功させるために特定の順序を必要とするパブリックおよびプライベート プロジェクトの複雑な構造を持っています。私たちの目標は、Maven リリースを実行して、複数の Maven アーティファクトを 1 つのステップでタグ付けしてデプロイすることです。
簡略化された Maven プロジェクト/モジュールと Git リポジトリ構造は次のとおりです。
parent-public:1.0.0:pom (descriptor only, no Maven modules, public Git repository)
| |
| |- public-module:1.0.0-SNAPSHOT:jar
| (Maven module, child of parent-public, Git submodule, public repository)
|
|- parent-private:1.0.0-SNAPSHOT:pom
(Maven modules, Git submodule, private repository)
|
|- public-module:1.0.0-SNAPSHOT:jar
| (Maven module only, child of parent-public, Git submodule, public repository, released)
|
|- private-module:1.0.0-SNAPSHOT:war
(Maven module, child of parent-private, released)
現在の構造により、Maven はプロジェクト/モジュールを個別にビルドおよびデプロイできます。
public-module
( parent-public/parent-private/public-moduleディレクトリから)リリースする場合、maven-release-plugin
は適切に機能します (Git リポジトリがタグ付けされ、リリース アーティファクトがデプロイされています)。
をリリースすると、ターゲットparent-private
のチェックアウト中に失敗する前に、リリースのmaven-release-plugin
準備と実行が開始されます(この問題についてはここで説明されていますが、私のコンテキストでは解決策が機能しておらず、コメントするのに十分な評判がありません)。
現在のmaven-release-plugin
構成は次のとおりです。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<commitByProject>true</commitByProject>
<pushChanges>true</pushChanges>
</configuration>
</plugin>
複数の Maven アーティファクトをリリースするために、Maven モジュールと Git リポジトリを整理するよりエレガントな方法はありますか? あるいは、アーティファクトをデプロイする直前のチェックアウト中に Git サブモジュールを再帰的に複製するソリューションを誰かが見つけましたか?