如何在maven中的平面多模块项目中配置scm?

时间:2012-09-06 07:59:33

标签: configuration maven-2 maven-release-plugin

我正在使用以下项目结构

parent
   +-- pom.xml (parent and reactor)
module-1
   +-- pom.xml
module-...
   +-- pom.xml

我希望能够在父项目上执行mvn release:prepare并在svn中生成战争以及一致的标记结构。

现在一切似乎都工作正常,除了标记模块,也就是说,mvn release:prepare将标记父项目,但没有标记子项目。我已经在parent-pom的配置中找到并尝试了切换commitByProject。我已经在moduel-poms中输入并删除了scm配置,我尝试在模块-poms中配置release-plugin都无济于事。发布步骤从不要求我提供任何模块的标记名,因此不会在项目中创建标记。

如何配置父级和模块,以便mvn release:prepare标记模块?

2 个答案:

答案 0 :(得分:2)

我建议重新组织结构以适应Maven的最佳实践,如下所示:

root (pom.xml; parent)
  +-- module-1 (pom.xml)
  +-- module-2 (pom.xml)
  +-- module-...

这将使您的生活更轻松,使用Maven以及通过mvn版本进行发布:准备等。

我假设你在VCS中有以下文件夹结构:

root 
  +-- parent (pom.xml)
  +-- module-1 (pom.xml)
  +-- module-2 (pom.xml)
  +-- module-...

root是从版本控制签出的文件夹(SVN中的trunk;或master git)。

如果你给出了给定模块中父节点的正确相对路径,那么一切都应该没有任何问题....在父节点中配置scm部分。

答案 1 :(得分:1)

进一步,无数小时的搜索我不再认为,可以使用maven发布插件标记每个模块独立于其他模块。

我发现(并且丢失了)一个明确的评论,这对于发布插件是不可能的,并且还有其他提示,例如,发布插件只能在非交互模式下接受一个scm标记。

由于我是Java开发人员,而不是maven开发人员,因此我拒绝更改我的包结构,因此无法手动执行标记。