maven - 发布 :prepare mess with SCM url before taging

标签 maven maven-release-plugin

我使用 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 标记已修改但不异常(exception):
<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 的位置

所以我真的不知道在哪里看。有没有人有同样的问题或有想法?我错过了什么?

谢谢。

最佳答案

首先,我建议在 bar-pom 中使用比 2.0 更新的版本配置发布插件(因为当前是 2.2.2 版本)并将信息 autoVersinSubmodules 也放入配置中(这让生活更轻松)。给定的选项 -DdevelopmentVersion=1.1 没有意义,因为开发版本必须以“-SNAPSHOT”为后缀,否则它是一个发布版本而不是一个开发版本。此外,还要添加 developerConnection 并在“trunk”的末尾添加一个“/”,如下所示 ../trunk/
maven-release-plugin 与您使用的 Maven 版本相关。 Maven 的 super-pom 定义了一组插件及其相应的版本。

关于maven - 发布 :prepare mess with SCM url before taging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10417757/

相关文章:

java - 是否可以在带有 Hibernate 和 AspectJ 的 Java 项目中使用 SBT?

java - 如何使用 Java 7 和 Maven 在 Eclipse Kepler 中运行 JSR 269 注释处理器

java - 在 SSH key 凭据上使用 Jenkins 构建版本和 Maven 发布插件失败

git - maven-release-plugin 是否将标签推送到远程 Git 存储库?

git - 如何在使用 maven release-plugin 和 git 发布期间避免 "Updates were rejected because the remote contains work"?

deployment - 使用 maven-release-plugin 部署程序集包

java - 更改jdk版本的问题

java - 在 Jenkins 上查找错误

java - Maven 创建一个空文件夹而不是获取适当的 .jar

java - 如何在不破坏 Maven 发布插件的情况下传递 javac 多个命令行参数,其中一些参数包括冒号?