这是 mvn release:prepare 的问题吗

Posted

技术标签:

【中文标题】这是 mvn release:prepare 的问题吗【英文标题】:Is this an issue with mvn release:prepare 【发布时间】:2013-10-21 22:37:43 【问题描述】:

我已将以下 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 中定义它。

【问题讨论】:

【参考方案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区域。

【讨论】:

以上是关于这是 mvn release:prepare 的问题吗的主要内容,如果未能解决你的问题,请参考以下文章

删除 mvn release:prepare 上的文件

运行 mvn release:prepare 的 svn commit 问题

使用 mvn release:prepare,是不是可以指示 Maven 在提交命令的子模块 pom 位置中使用正斜杠?

在 release:prepare 和 release:perform 上激活配置文件

Maven 发布插件:release:prepare-with-pom vs -DgenerateReleasePoms

使用eclipse执行maven-release-plugin插件发布jar异常问题(.project)(Cannot prepare the release because you have loc