0

次の scm タグをマスター pom に追加しました。

<scm>
    <developerConnection>
       scm:svn:http://<server>/svn/<svnpath>/${project.artifactId}/trunk
    </developerConnection>
</scm>

これはかっこいいと思いました。マスターからぶら下がっているすべてのプロジェクトは、すべてパス戦略を採用しています。

release:prepare を実行しようとすると、子プロジェクトでは失敗します。

子 POM には、次の形式で scm タグが追加されます。

<scm>
    <developerConnection>
        scm:svn:http://<server>/svn/<svnpath>/<artifact>/tags/v1.0.0
    </developerConnection>
</scm>

後続の svn コマンドラインは、タグからタグ付けしようとして失敗します。

[INFO] Executing: cmd.exe /X /C "svn --non-interactive copy --file C:\DOCUME~1\<me>\LOCALS~1\Temp\maven-scm-1302559010.commit http://<server>/svn/<svnpath>/<artifact>/tags/v1.0.0 http://<server>/svn/<svnpath>/<artifact>/tags/v1.0.0"

Q1. これはMavenリリースのバグですか? Q2. バグでなければ、私が行ったようにマスターで scm タグを定義することはできませんか?

子で scm タグをハードコーディングすると実際に修正されますが、多くの子プロジェクトがあるため、可能であればマスター pom でこれを定義することをお勧めします。

4

1 に答える 1

1

まず、バグではありません。その意図は、すべてのプロジェクトが正しい情報を含む独自の SCM エリアを持つことです。それとは別に、プラグインのリリース サイクル中に、情報は次のようなものから置き換えられます。

<scm>
    <developerConnection>scm:svn:http://<server>/project/trunk</developerConnection>
</scm>

以下に:

<scm>
    <developerConnection>scm:svn:http://<server>/project/tags/xyz-1.0.0</developerConnection>
</scm>

さらに、次のように情報を親 (master pom) に入れなければならなかったという考え:

<scm>
    <developerConnection>
       scm:svn:http://<server>/svn/<svnpath>/${project.artifactId}/trunk
    </developerConnection>
</scm>

master-pom を次のようにリリースすることで置き換えられます。

<scm>
    <developerConnection>
       scm:svn:http://<server>/svn/<svnpath>/master/tags/1.0.0
    </developerConnection>
</scm>

これは、すべての子モジュールが上記を使用することを意味しますが、これは決定的に間違っています。そのため、すべてのプロジェクトで scm 領域を個別に設定する必要があります。

于 2013-10-14T13:42:49.500 に答える