我的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中不存在
答案 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