当前位置: 首页 > 知识库问答 >
问题:

Maven Release Plugin - release:branch - 版本参数 -DbranchName

麹凯捷
2023-03-14

在执行 mvn 释放:分支 命令时,我想尝试使用版本参数配置 -DbranchName 参数。但我还没有找到一种方法来成功地做到这一点。

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

我已经尝试执行< code > 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}'

有有效的方法吗?或者,当使用maven发布插件执行<code>发布:branch

基本上,我正在寻找的是类似于tagNameFormat属性的东西,但用于分支。当做一个发布:执行目标,我可以有


共有1个答案

缪朝
2023-03-14

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

<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}

或者更好地将<code>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>

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

 类似资料:
  • 问题内容: 您如何访问“工作流程” Jenkins作业的“此构建已参数化”部分中的设置? 测试用例 创建一个工作流作业。 启用“此构建已参数化”。 添加具有默认值的STRING PARAMETER 。 将以下代码添加到: 运行工作。 结果 问题答案: 我认为使用Workflow插件时,变量可以直接使用,而不是通过env。尝试:

  • 问题内容: 我正在尝试使用Maven释放一个库并执行站点部署来sourceforge(我首先创建了一个交互式shell)。该发布由Jenkins作业完成(使用Jenkins的Maven发布插件)。 我试过了: 和 但两次工作都挂在site:第一个模块的部署: 当我停止工作时,将在最后打印以下内容: 这可能意味着$ {username}尚未解析。 如何解析$ {username}? 编辑: 请注意以

  • 问题内容: Jenkins允许您对构建进行参数化,但是我不知道如何实际使用它: 假设我通常会像下面这样从命令行启动我的Ant构建: 这将调用build.xml的package目标,并为其提供名为的属性packageType,其值为jar。 我假设在上面的屏幕截图中,“ 名称”字段是我要 指定的位置packageType,但是值呢? 如果Jenkins希望我为该属性指定默认值,那么在哪里可以指定项目

  • 在我在互联网上看到的大约一半的svg示例中,代码都是简单的

  • 问题内容: 我试图在我的Jenkins Build中获得对我的Xcode项目CFBundleVersionString或CFBundleVersion的引用。 我的目标是能够以$ {CFBundleVersionString}。$ {build_number}这样的方式设置内部版本号。这样,版本由项目决定,并且在构建项目时会在内部添加内部版本号。 这有可能吗?我知道您可以引用$ {build_nu

  • 我有一个scala play应用程序;我正试图为我们的服务暴露健康检查。健康检查的一部分,我想捕捉项目工件版本。 惰性val root=(文件中的项目(“.”)).EnablePlugins(PlayScala)