Maven 发布插件 - 发布 :branch - Version Parameter in -DbranchName

标签 maven maven-release-plugin

执行 mvn release:branch 时命令,我想尝试配置 -DbranchName带有版本参数的参数。但我还没有找到成功做到这一点的方法。

例如,如果我在主干中有一个版本为 1.0-SNAPSHOT 的项目,我想使用 --batch-mode 创建一个分支选项并指定 -DbranchName将当前项目版本 (1.0-SNAPSHOT) 作为 branchName 中的参数。

我试过 mvn release:branch -DbranchName=VERSION-@{project.version} ,但它似乎并没有像我希望的那样工作。我没有创建名称为 VERSION-1.0 的分支,而是收到以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.3:branch (default-cli) on project project-a: Unable to branch SCM
[ERROR] Provider message:
[ERROR] The svn branch command failed.
[ERROR] Command output:
[ERROR] svn: E205000: Try 'svn help copy' for more information
[ERROR] svn: E205000: Syntax error parsing peg revision '{project.version}'

有没有有效的方法来做到这一点?或者在执行 release:branch 时这是不可能的吗?使用 Maven 发布插件?

编辑

基本上我要找的是类似于 tagNameFormat 的东西属性(property),但对于分支机构。在做 release:perform 时目标,我可以拥有<tagNameFormat>VERSION-@{project.version}</tagNameFormat>在 pom 中指定,并且在使用 --batch-mode 进行发布时我不需要包含任何标签名称属性.在执行 release:branch 时是否有任何类似的属性用于格式化分支名称?

最佳答案

您可以使用内置的 ${project.version}(前缀为 $ 而不是 @ - 后者似乎只是在 tagNameFormat 参数中可用)。请注意,如果您使用 ${project.version},该值可能包含子字符串 SNAPSHOT。可能有几种方法可以删除该子字符串。一种方法是应用 the answer to this question 中提到的辅助插件这使您可以访问该版本的语义组件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.8</version>
    <executions>
      <execution>
        <id>parse-version</id>
        <goals>
          <goal>parse-version</goal>
        </goals>
      </execution>
    </executions>
</plugin>

然后就可以在命令行中使用属性了:

mvn release:branch -DbranchName=VERSION-${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}

或者最好将 branchName 参数作为插件配置的一部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.5.3</version>
    <executions>
        <execution>
            <configuration>
                <branchName>VERSION-${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</branchName>
            </configuration>
            <goals>
                <goal>branch</goal>
            </goals>
        </execution>
    </executions>
</plugin>

在这种情况下,您不需要在命令行上传递这些魔法属性。

关于Maven 发布插件 - 发布 :branch - Version Parameter in -DbranchName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43077849/

相关文章:

git - 在使用 Hudson/Jenkins 等 CI 工具时,我如何通过 GitHub(或 GitHub 企业版)成功使用 Maven 发布插件

java - maven发布插件: releasing from git sub folder?

java - Maven Shade 插件未附加所有 spring.schemas

java - 在 Eclipse 中将外部 jar 添加为单独的文件或用户定义的库的首选方法?

git - Maven 发布插件和 Git 标记样式

java - 如何从Java程序调用Jenkins中的 "Perform Maven release"?

maven - 如何让 Maven 发布插件跳过测试?

java - 使用 Maven 将 POJO 构建为 WAR

java - 使用Maven,如何正确部署依赖于J2EE/JPA JAR的WAR?

java - Maven自包含子 Artifact