1

我的 pom.xml 文件中的 scm 标签有点问题。

我的项目架构是这样的:

Parent
Submodule1
Submodule2
reactor

Parent 是包含所有 maven 插件配置、库版本等的项目。它是 reactor 项目的父级,它是所有子模块的父级。

Reactor 是一个 pom.xml,其中包含编译所有子模块的标签。

我想将 scm 标签放在父 pom.xml 上,因为它是更高的 pom.xml。但是当我想做“mvn release:prepare”时出现错误。

所以我把 scm 标签放在反应器 pom.xml 中,它就可以工作了。

这对我有好处,它可以工作:) 但我不明白为什么我需要将 scm 标签放在 reactor pom.xml 中。

有人可以向我解释这种行为吗?

谢谢。

编辑:

这是文件夹结构:

root
  parent
    pom.xml (parent)
  submodule1
    pom.xml
  submodule2
    pom.xml
  pom.xml (reactor)

这是 pom reactor 有趣的部分:

<parent>
    <groupId>groupId</groupId>
    <artifactId>parent</artifactId>
    <relativePath>./parent/pom.xml</relativePath>
    <version>1.0.2-SNAPSHOT</version>
</parent>

<modules>
    <module>parent</module>
    <module>submodule1</module>
        <module>submodule2</module>
</modules>

最后,这是发布的错误:准备:

[INFO] 无法标记 SCM 提供程序消息:svn tag 命令失败。命令输出:svn:路径 'http://10.211.55.4/svn/trunk/reactor' 在版本 112 中不存在

4

1 回答 1

1

第一个要求是我假设存在 SVN 中的主干、标签和分支文件夹,但您必须仅在反应器中定义 scm 部分,而不是在父级中。

  root
    +-- pom.xml (reactor)
    +-- parent
    !      +-- pom.xml (parent)
    +-- submodule1
    !      +-- pom.xml
    +-- submodule2
           +-- pom.xml

此外,您还应该使用 true 定义 maven-release-plugin(反应器)。

这种情况的默认处理是 Maven 将对 SVN 路径进行相对更改。这会像你一样产生麻烦。因此,您必须将信息放入反应堆 pom 而不是放入父 pom。非常重要的是只有一个配置。

此外,我建议删除父级并将信息放入反应堆,因为您在站点生成阶段会遇到麻烦。

  root
    +-- pom.xml (parent)
    +-- submodule1
    !      +-- pom.xml
    +-- submodule2
           +-- pom.xml
于 2011-06-19T17:17:08.280 回答