2011-06-19 108 views
1

我对我的pom.xml文件中的scm标签有点问题。哪里放置scm标签?

我的项目结构是这样的:

Parent 
Submodule1 
Submodule2 
reactor 

家长是容纳所有Maven插件配置的项目,librairies版本等。它是所有子模块的母公司的反应堆项目的母公司。

反应器是一个pom.xml文件,它包含标签来编译所有的子模块。

我想将scm标签放在父pom.xml中,因为它是较高的pom.xml。但是当我想要做一个“mvn发布:准备”时我会遇到一个错误。

所以我把SCM标签放在reactor pom.xml中,它可以工作。

它对我很好,它的工作:)但我不明白为什么我需要把scm标签放在反应堆中。

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

谢谢。

编辑:

这里的文件夹结构:

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> 

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

[INFO] Un能够标记SCM 提供程序消息: svn标记命令失败。 命令输出: 的svn:路径“http://10.211.55.4/svn/trunk/reactor”不存在修改112

+0

你有什么样的错误? (消息?)你可以给文件夹结构的POM的位置?你是如何做出pom的关系的(通过家长?)你的反应堆是什么样的?(包含在 ......? – khmarbaise

回答

1

第一个要求是主干,标签和分支在SVN文件夹中,我assuem但 您必须仅在反应器中定义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