使用maven发布插件的错误

Posted

技术标签:

【中文标题】使用maven发布插件的错误【英文标题】:An error of using maven release plugin 【发布时间】:2012-10-11 03:31:13 【问题描述】:

我的项目架构是这样的:

--Parent
  --Submodule1
  --Submodule2
--pom.xml(main)

Parent 是包含所有 maven 插件配置、库版本等的项目。它是所有项目的父级,也是所有子模块的父级。 我在 pom.xml(main) 中配置插件,如下所示:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
    <tagBase>svn://192.168.5.213/hxbos/hxecp-src/tags/hxbos</tagBase>
    <branchBase>svn://192.168.5.213/hxbos/hxecp-src/branches/hxbos</branchBase>
    <remotetagging>true</remotetagging>
    <checkModificationExcludes>
      <checkModificationExclude>**/*.log</checkModificationExclude>
      <checkModificationExclude>**/*.jar</checkModificationExclude>
      <checkModificationExclude>**/system*</checkModificationExclude>
    </checkModificationExcludes>
  </configuration>
</plugin>

这是我的 scm 信息:

<scm>
  <connection>scm:svn:svn://192.168.5.213/hxbos/hxecp-src/trunk/hxbos</connection>
  <developerConnection>scm:svn:svn://192.168.5.213/hxbos/hxecp-src/trunk/hxbos</developerConnection>
  <url>scm:svn:svn://192.168.5.213/hxbos/hxecp-src/trunk/hxbos</url>
</scm>

但是当我使用:mvn release:prepare 时,出现错误:

 The svn tag command failed.
 Command output:
 svn: “svn://192.168.5.213/hxbos/hxecp-src/trunk/hxbos” does not exist in 
 revision 0.

为什么是修订版 0?

【问题讨论】:

因为仓库不存在。检查具有给定 IP 地址的机器上是否有 /hxbos/hxecp-src 下的存储库 .. 我确定存储库退出,我们正在使用。 这有帮助吗? maven.apache.org/plugins/maven-release-plugin/… 谢谢,我已经看过FAQ了,帮不上忙!修订版是0,为什么? 所有子项目中都有scm元素吗? 【参考方案1】:

这里有几件事要检查:

我的 SCM URL 如下所示:

scm:svn:https://subversion.company.com/svn/maven/trunk/corporate-parent

注意https 部分;你显示scm:svn:svn,不知道它是如何工作的。

有一个地方让我感到困惑:我使用 https 协议检查了一个现有项目,但 POM 在其 SCM 连接块中有“http”。不匹配导致发布时出现问题。因此,使您用于结帐的协议与 POM 中的 SCM 连接相匹配。如果你这样做了

svn checkout http://192.168.5.213/hxbos/hxecp-src/trunk/hxbos

那么您的 SCM 块应如下所示:

<scm>
    <connection>scm:svn:http://192.168.5.213/hxbos/hxecp-src/trunk/hxbos</connection>
</scm>

如果您要进行多模块构建,请在所有 POM 中定义 SCM 块,不要让它们从父 POM 继承。

最后但同样重要的是,请确保您使用的是最新版本的发布插件。


编辑:在 tagBase 和 branchBase URL 中也使用 http: 或 https:(无论您用于执行原始结帐)。我注意到您在这些 URL 中有“svn:”前缀。 docs for tagBase 表示“例如,http://svn.apache.org/repos/asf/maven/plugins/tags。该 URL 是 SVN URL,不包括 SCM 提供程序和协议。”

【讨论】:

谢谢你,你说的我都试过了,但又失败了,我快疯了。 你用什么版本的svn来检查代码?如果你用-X 运行 mvn,你能看到 Maven 使用的是哪个版本的 svn?也许那里不匹配。 maven 版本:3.0.4 svn 版本:1.5 插件版本:2.3.2

以上是关于使用maven发布插件的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Maven 发布插件时无法标记 SCM

Maven Jaxb2 插件错误

使用maven jetty插件在java 8上运行jetty 9时出现错误扫描文件[重复]

如何正确使用maven资源插件

带有 Maven Shade 插件的 Spring Boot - 未映射控制器(404 错误)

如何使用 Maven Enforcer 插件?