【问题标题】:Is this an issue with mvn release:prepare这是 mvn release:prepare 的问题吗
【发布时间】:2024-01-10 00:03:01
【问题描述】:

我已将以下 scm 标签添加到我的主 pom:

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

我认为这很整洁。挂在master上的项目都采用路径策略。

当我来做一个发布:准备虽然在一个子项目上它失败了。

子 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"

第一季度。这是 maven 版本的错误吗? Q2。如果不是bug,是不是不能像我之前那样在master中定义scm标签?

在子进程中硬编码 scm 标签实际上可以修复它,但由于我们有很多子项目,如果可能的话,我更愿意在主 pom 中定义它。

【问题讨论】:

    标签: svn maven maven-2 maven-3 maven-release-plugin


    【解决方案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>
    

    此外,您必须像这样将信息放入您的父母(主 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区域。

    【讨论】: