我已将以下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中定义它。如果可能的话。
答案 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区域。