这是mvn release:prepare的问题

时间:2013-10-14 11:16:20

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

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

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

我认为这很整洁。所有悬挂在主人身上的项目都采用了路径策略。

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

子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中定义它。如果可能的话。

1 个答案:

答案 0 :(得分:1)

首先它不是一个bug。目的是每个项目都有自己的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区域。