放置scm标签的地方?

时间:2011-06-19 11:43:46

标签: maven maven-release-plugin maven-scm

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

我的项目架构是这样的:

Parent
Submodule1
Submodule2
reactor

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

Reactor是一个pom.xml,它包含用于编译所有子模块的标记。

我想将scm标记放在父pom.xml上,因为它是更高的pom.xml。但是当我想做一个“mvn release:prepare”时,我收到了一个错误。

所以我将scm标记放在reactor pom.xml中,它可以工作。

这对我有好处,它有效:)但我不明白为什么我需要把scm标签放在反应堆pom中。

有人能解释我这种行为吗?

感谢。

修改:

这是文件夹结构:

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

这是pom反应堆的有趣部分:

<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>

最后,这是发布的错误:prepare:

[INFO]无法标记SCM 提供者留言: svn标记命令失败。 命令输出: svn:路径'http://10.211.55.4/svn/trunk/reactor'在修订版112中不存在

1 个答案:

答案 0 :(得分:1)

第一个要求是SVN中的trunk,tags和branches文件夹存在,但我认为 你必须只在反应堆中而不是在父级中定义scm部分。

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

此外,你应该定义maven-release-plugin(reactor)以及true。

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

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

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