ネストされたGitサブモジュールを使用しているとき、Mavenモジュールをリリースするための解決策やガイド/チュートリアルが見つかりませんでした。ネストされたGitサブモジュールを使用して複数のMavenアーチファクトを解放する
ビルドには特定の順序が必要な公開プロジェクトと非公開プロジェクトの複雑な構造があります。私たちの目標は、複数のMavenアーティファクトを一度にタグ付けして展開するために、Mavenリリースを実行することです。ここで
が簡略化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
を放出maven-release-plugin
行うウェル(Gitのリポジトリがタグ付けされたアーティファクトを解放された展開されています)。
parent-private
を解放
maven-release-plugin
は準備し
ターゲットチェックアウト時に失敗する前に、リリースの実行を開始(この問題は
hereを議論しているが、解決策はコメントするのに十分な評判を私のコンテキストで作業していないされていません)。ここで
は現在maven-release-plugin
構成です:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagNameFormat>[email protected]{project.version}</tagNameFormat>
<commitByProject>true</commitByProject>
<pushChanges>true</pushChanges>
</configuration>
</plugin>
は、複数のMavenアーティファクトを解放するために、MavenのモジュールとGitリポジトリを整理するために、よりエレガントな方法はありますか?あるいは、成果物を配備する直前にチェックアウト中にGitサブモジュールを再帰的にクローンするソリューションを見つけましたか?
ではないことも事実であるマルチモジュールビルドをサブモジュールの代わりに単一のGitリポジトリに配置する必要があります。さらに、マルチモジュールビルドを使用すると、モジュール全体をワンステップで簡単に展開/解放することができます。 ? – khmarbaise
@khmarbaise:あなたのコメントをいただきありがとうございます。私たちは、複数のMavenモジュールを備えた単一のGitリポジトリに移動することを決定しましたので、私たちのプロジェクト構造に_simple_ソリューションが見つかりませんでした。 – almeidap
IMHOは本当に良い選択肢ではありません。リリース中のステップで_tag_が作成され、thこのタグからコードを復元すると、このリリースのすべてのコードが私に与えられます。しかし、GITサブモジュールでは、サブモジュールを最初のモジュールとして簡単に見ることができるため、ユーザーがそのタグからすべてを取得できるようにする方法はありません。 –