2012-12-10 39 views
1

我正在使用maven-release-plugin 2.3.2并能够使用prepare and perform release。问题是这样的。Maven发布插件在svn中创建递归目录

SVN回购:http://svnserver:8080/myrepo/test/projectA

Project A   
    | 
    branches/ 
    tags/ 
    trunk/ 

当我做一个mvn release:perform它第一次将创建标签内这种结构/文件夹

branches/ 
tags/ 
    | 
    ProjectA_1.0.0 
     | 
     branches/ <structure from the parent branches/ folder> 
     tags/ 
     trunk/ 

当我做一个mvn release:perform第二时间,这是输出

branches/ 
tags/ 
    | 
    ProjectA_1.0.0 
     | 
     branches/<structure from the parent branches/ folder> 
     tags/ 
     trunk/ 
    ProjectA_1.0.1 
     | 
     branches/<structure from the parent branches/ folder> 
     tags/ProjectA_1.0.0/branches/<structure from the parent branches/ folder> 
     tags/ProjectA_1.0.0/tags/ 
     tags/ProjectA_1.0.0/trunk 
     trunk/ 

等等......在整个1.0.1将里面1.0.2被复制,直到我有一个递归的噩梦了:)

但如果我转到我的<releases>库中的Nexus,没事了,我看到干净的目录如

1.0.0 
1.0.1 
1.0.2 

其中有正确的工件。


我已经在命令行直接使用插件并使用M2发布插件从Jenkins进行了测试。同样的结果。这指向了某个地方错误配置的方向,而不是我如何或从哪里调用它。


我在做什么错误的插件或scm标签?

+2

我认为开发人员连接是错误的(不指向您的父pom.xml的位置)。或者你的发行版插件配置错误的branchBase/tagBase。 – wemu

+0

我正在研究'developerConnection'也是由@khmarbaise建议的,但我没有明确使用标记库,因为我的SVN是相当标准的结构。 –

+0

@wemu ..它实际上是两个设置。我最终也使用了'-DtagBase'。欢呼声 –

回答

4

你必须定义你喜欢释放和配置到您的pom.xml的供应链管理领域的项目的主干:

这意味着定义:

<scm> 
    <connection>scm:svn:http://svnserver:8080/myrepo/test/projectA/trunk</connection> 
    <developerConnection>scm:svn:http://svnserver:8080/myrepo/test/projectA/trunk</developerConnection> 
</scm> 

如果你有一个多模块版本,你必须定义,只在父,而不是在孩子。

+0

我们说我必须为每个项目级别的POM都有一个'SCM'标签。我不能在我的公司父母POM? –

+0

那么,如果继承父项目的项目实际上不在其下面,会发生什么?最好的方法是每个项目都有明确的''部分。如果它是一个多模块项目,你可以跳过它,但通常你应该拥有它。 – carlspring

+0

@PulakAgrawal scm信息的想法是识别每个项目,如果你只下载pom文件,你可以获得你需要的所有信息(它在SVN中的位置等)。所以你必须在每个项目中都有scm块。 – khmarbaise