我使用 SVN 对源文件进行版本控制,并使用 maven 发布插件来创建和标记发布。我的项目是一个多模块项目。
短篇故事
release:prepare 目标会在我的 SCM 中同时标记主干和标签。
很长的故事
我的项目是一个多模块项目:
bar
module1
module2
...
pom.xml
SCM 标签在我的项目父 POM bar/pom.xml 中配置如下:
<scm>
<connection>scm:svn:http://svn.mycompany.local/svn/foo/projects/bar/trunk</connection>
<url>http://svn.mycompany.local/svn/foo/projects/bar/trunk</url>
</scm>
当我运行时:
mvn release:prepare -DskipTests=true -DautoVersionSubmodules=true -DdevelopmentVersion=1.1 -DdryRun=true
pom.xml.tag 中的 SCM 标记已修改但不例外:
<scm>
<connection>scm:svn:http://svn.mycompany.local/svn/foo/projects/bar/tags/bar-1.0/trunk</connection>
<url>http://svn.mycompany.local/svn/foo/projects/bar/tags/bar-1.0/trunk</url>
</scm>
如果我执行发布:
mvn release:clean release:prepare release:perform -DautoVersionSubmodules=true -DdevelopmentVersion=1.1
目录主干和标签在标签文件夹中被标记。我在存储库中得到了这个结构:
bar
/trunk/
[...]
/tags
/bar-1.0
/trunk
/tags
然后执行目标失败:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:perform (default-cli) on project bar: Error executing Maven.
Working directory "C:\projects\foo\bar\target\checkout\bar" does not exist! -> [Help 1]
事实上,我在我的 target\checkout 目录中有这个:
tags\
trunk\
我还有其他几个项目在使用相同类型的配置时没有问题。
我检查的内容: - 我的颠覆结构遵循传统的分支/主干/标签,因此这里不必提及 tagBase - 有效的 POM 显示正确的 SCM 配置(当然是在标记之前) - 当然检查了 SCM url正确并指向 pom.xml 的位置
所以我真的不知道在哪里看。有没有人有同样的问题或有想法?我错过了什么?
谢谢。