0

我已将以下 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"

Q1。这是 maven 版本的错误吗?Q2。如果它不是错误,我是否不允许像我所做的那样在 master 中定义 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>

此外,您必须将信息放入您的父母(主 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 回答