4

バージョン: maven 3.0.4、リリース プラグイン 2.4.0

目標は、maven リリース プラグインを使用して、非インタラクティブな方法で複数の機能 (プロジェクト) を 1 つのステップでリリースすることです。私は使用します:http://maven.apache.org/maven-release/maven-release-plugin/examples/non-interactive-release.html

Svn 構造 :

http://host/svn/feature1/trunk | tags | branches
http://host/svn/feature2/trunk | tags | branches
http://host/svn/feature3/trunk | tags | branches

各機能には、特定のバージョン名を持つ pom.xml と scm url セクションがあります。

この構造では、すべての機能を 1 つのステップでリリースしたいと考えています (12 以上の機能があり、それらの間に依存関係があります...)。Maven リアクター プラグインは、すべてを適切な順序で展開およびリリースするために、大いに役立つと考えていました ;-) 次に、次の svn externals を使用して、svn に「ビルド/アセンブリ」プロジェクト ブランチを作成します。

feature1 http://host/svn/feature1/trunk
feature2 http://host/svn/feature2/trunk
...

svn externals を使用する目的は、フラットなワークスペースを持つことです (Maven リリース プラグインの問題を回避します...)。このビルド プロジェクトには、すべての機能のマルチ プロジェクト アグリゲーターである pom.xml が 1 つだけあります。

<modules>
    <module>feature1</module>
    <module>feature2</module>
    <module>feature3</module>
    ...
</modules>

次に、maven release コマンドを使用します

mvn -B release:clean release:prepare release:perform

次の release.properties で

project.rel.org.sample.test\:feature1=1.0.0-RC1
project.dev.org.sample.test\:feature1=1.0.0-RC2-SNAPSHOT
project.scm.org.sample.test\:feature1.developerConnection=scm\:svn\:http\://host/svn/feature1/trunk
project.scm.org.sample.test\:feature1.connection=scm\:svn\:http\://host/svn/feature1/trunk

project.rel.org.sample.test\:feature2=1.0.0-RC1
project.dev.org.sample.test\:feature2=1.0.0-RC2-SNAPSHOT
...

このファイルと -B 引数を使用すると、機能のバージョンをユーザーに尋ねる対話型の入力は必要ありません。したがって、ジョブはjenkins :Dを使用して起動できます...

このステップで:

  • scm でコミットされた変更は問題ありません (scm の URL とバージョン)
  • アーティファクトは適切に展開されています
  • しかし、機能の scm タグは svn で作成されません...

ルートビルド/アセンブリ プロジェクトの scm タグのみが実行されています...

[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Reactor Summary:
[INFO] [INFO]
[INFO] [INFO] build ..................................... SUCCESS [1.104s]
[INFO] [INFO] feature1 .................................. SUCCESS [0.187s]
[INFO] [INFO] feature2 .................................. SUCCESS [0.648s]
[INFO] [INFO] feature3 .................................. SUCCESS [0.370s]
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] BUILD SUCCESS
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Total time: 2.552s
[INFO] [INFO] Finished at: Thu Jan 03 14:45:37 CET 2013
[INFO] [INFO] Final Memory: 9M/22M
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] Cleaning up after release...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] build ............................................. SUCCESS [7.201s]
[INFO] feature1 .......................................... SKIPPED
[INFO] feature2 .......................................... SKIPPED
[INFO] feature3 .......................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

機能の SKIPPED ステータスは、概要では奇妙に見えます (ただし、コミットおよびクリーニング フェーズでは成功です)

問題を説明するのは本当に簡単ではありません。明確にしたいと思います...

誰も同じ問題に遭遇しましたか? この問題を解決するためのトリック/情報はありますか?

4

1 に答える 1

2

私の頭に浮かぶ最初のことは、次のように SVN で外部を使用することです。

feature1 http://host/svn/feature1/trunk
feature2 http://host/svn/feature2/trunk
...

まったく再現できない状態が生成されます。トランクは将来変更されるため、この正確な状態を再現することはできません。さらに、maven-release-plugin がルート部分 (集約 pom) のタグのみを作成することは正しいです。一方、外部との関係で絶対 URL を使用することは避ける必要があります。

上記とは別に、目的ではない依存関係管理ツールとして SVN を使用しているように聞こえます。Maven はそのようなもののために設計されているため、特に、機能ではないように聞こえる機能間に関係がある場合は、代わりにモジュールのように聞こえます機能の。その結果、構造を変更する必要があります。

  +-- root (pom.xml with modules list)
       +--- module-1 (pom.xml)
       +--- module-2 (pom.xml)
       +--- module-3 (pom.xml)
       +--- module-4 (pom.xml)
       ...

SVN では、ルート フォルダーをプロジェクトのトランクに配置し、ルート pom.xml ファイルで単一の scm ara のみを定義する必要があります。これはマルチモジュール ビルドと呼ばれ、モジュール間の依存関係などを処理し、リアクターを正しい順序に並べます。

于 2013-01-03T15:36:29.377 に答える