Maven3.0.4の使用。
私は、組織に親会社のPOMを提供する任務を負っています。私のチームは、このPOMを使用するときに開発者が抱える質問や問題をサポートします。多くの場合、ビルドログをサポートチケットに添付します。したがって、会社のPOMで、ビルドを使用して親会社のバージョンをコンソールにエコーする必要があります。私はこれにantrunプラグインを使用しています。
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>echo-build-environment</id>
<phase>validate</phase>
<goals><goal>run</goal></goals>
<configuration>
<target>
<echo level="info" message="Maven ${maven.version}" taskname="Version" />
<echo level="info" message="Corporate POMs ${want.the.version.here}" taskname="Version" />
....
</target>
秘訣は、親会社とビルドで使用されるPOMの間にPOM継承の「レベル」がいくつあるかわかりません。次のような継承構造を持つことができます。
corporate-parent
team-parent
application-parent
child-module
またはこれと同じくらい簡単です:
corporate-parent
a-simple-library
${project.version}
現在の(子)プロジェクトのバージョンになるため、エコーできません。${project.parent.version}
継承のレベルがいくつあるかわからないため、使用できません。コーポレートPOMバージョンにハードコーディングされたプロパティを定義しようと<corporate.pom.version>
しましたが、コーポレートPOMをリリースすると、リリースプラグインはそのプロパティを更新することを認識しません(これは、依存関係バージョンではなく、単なるプロパティであり、リリースバージョンです。それを更新することを知ることができません)。
理想的には、のようなプロパティを介して特定のPOMのバージョンを直接取得できるようにしたいと思います${some.groupId.corporate-parent.version}
。そのようなものはありますか?
そうでない場合、リリース中に、リリースされreleaseVersion
ているプロジェクトのPOMプロパティを更新する方法はありますか?
各リリースの前に、プロパティを手動で編集するというブルートフォースの方法に戻すことができました。私のチームメートはそのアプローチを高く評価しませんでした。
一見難しいとは思えないことをするために、カスタムプラグインを作成する必要がないことを願っています。