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

无法将git的标记推送到远程作为maven发布进程

叶文博
2023-03-14

我正在使用maven发布插件,以便能够使用jenkins的发布插件。我正在使用一个在linux系统(centos)上运行它的多模块项目。为此,我在父pom中添加了以下插件配置:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
     <version>2.5.3</version>
     <configuration>
        <tagNameFormat>v@{project.version}</tagNameFormat>
        <arguments>-Dmaven.test.skip=true -DskipTests -Dbatch=true</arguments>
        <tagBase>http://gitcore/user/app/tags</tagBase>
     </configuration>
</plugin>

也添加到这个pom.xml这些行的顶部:

<scm>
   <connection>scm:git:git@gitcore:user/app.git</connection>
  <developerConnection>scm:git:git@gitcore:user/app.git</developerConnection>
   <url>http://gitcore.company.local/</url>
</scm>

之后,我运行以下maven命令:mvn-B release:clean release:prepare release:perform

prepare还成功地将pom版本及其模块(子项目)推广到git origin。它只创建具有正确版本的本地git标记,但未能成功推送到远程。在使用-X运行maven之后,我得到的是:

组织。阿帕奇。专家生命周期。LifecycleExecutionException:无法执行目标组织。阿帕奇。专家plugins:maven release plugin:2.5.3:projectprojectParent上的prepare(默认cli):无法标记SCM提供程序消息:git push命令失败。命令输出:访问被拒绝。致命:无法从远程存储库读取。

请确保您拥有正确的访问权限,并且存储库存在。

在这些线的上方,我注意到了与推git标签相关的以下内容:

[INFO] Executing: /bin/sh -c cd /home/mickey/App/ProjectParent && git push git@gitcore:user/app.git refs/heads/release_version_8_0:refs/heads/release_version_8_0
[INFO] Working directory: /home/mickey/App/ProjectParent
[INFO] Tagging release with the label v8.0.2...
[DEBUG] ScmTagPhase :: scmTagParameters remotingTag true
[DEBUG] ScmTagPhase :: scmTagParameters scmRevision null
[DEBUG] ScmTagPhase :: fileSet  basedir = /home/mickey/App; files = []
[INFO] Executing: /bin/sh -c cd /home/mickey/App && git tag -F /tmp/maven-scm-876857130.commit v8.0.2
[INFO] Working directory: /home/mickey/App
[INFO] Executing: /bin/sh -c cd /home/mickey/App && git push **git@gitcore:user** refs/tags/v8.0.2
[INFO] Working directory: /home/mickey/App

我试图在本地运行最后一次推送(git push)git@gitcore:user)与我从maven运行时遇到的错误相同,但在我向push命令中添加了它工作的文件名之后。我不明白为什么在我放入pom时,它没有用整个标记路径运行git push的整个命令。

共有1个答案

宋飞舟
2023-03-14

我有类似的问题,但我使用平面目录多模块,如:

release-workspace\
|
|--release-parent
|    |+pom.xml (modules: ../release-module1, ../release-module2)
|--release-module1
|    |+pom.xml (parent: ../release-parent/pom.xml)
|--release-module2
|    |+pom.xml (parent: ../release-parent/pom.xml)

版本2。x不支持平面目录多模块。你可以在这里查看https://issues.apache.org/jira/browse/MRELEASE-261

作为解决方法,您可以创建pom。根目录中的xml

release-workspace\
|
|--release-parent
|    |+pom.xml (parent: ../pom.xml, modules: ../release-module1, ../release-module2)
|--release-module1
|    |+pom.xml (parent: ../release-parent/pom.xml)
|--release-module2
|    |+pom.xml (parent: ../release-parent/pom.xml)
|--pom.xml (modules: release-parent) <-- maven-release-plugin goes
 类似资料:
  • 我想更改Git默认远程分支目标,这样我就可以 而不是: 目前它被设置为源遥控器,我想把它设置为不同的遥控器。 我试图删除原来的(克隆的)遥控器 这确实删除了原始遥控器。但不能解决 问题。我仍然得到: 致命:没有配置的推送目标。从命令行指定 URL ,也可以使用以下命令配置远程存储库: 我还试着玩: 和其他选项,但似乎都不起作用(可能是因为我太快删除了源远程?) 按照这里的答案,我试图改变: 但两者

  • 问题内容: 我想以编程方式从Java程序启动Maven发行版。该网页显示了一般的操作方法。这就是我所做的: 该论坛建议“在发布之前,请先查看一下表格,您就应该能够提出cURL请求”,这就是我所做的。发行至少开始。 我现在不知道如何逃避一切。浏览器将空格显示为“ +”,但是如果我以这种方式发送数据,它将无法正常工作。实际上,“”,“ +”或“%20”都不用作空格。 我仍然可以进入构建,因此我可以肯定

  • 我从Bitbucket或Github迁移了我的回购协议。我认为这无关紧要,但这是唯一不同的地方。有一段时间,我安装了两个遥控器: 然后我将两者都删除,并将原点指向github: 开发分公司测试推送: 一切都是最新的,好的,很好。 按照常规为某些工作创建新分支: 更新一两个文件。尝试推送至远程: 这会导致错误: 致命:无法将功能/名称解析为分支 在线搜索此问题,找到一些关于确保HEAD正确的信息,其

  • 我使用maven远程资源插件从工件中获取一些资源,还需要捆绑一些资源以用于另一个项目。 我在默认部分(不在配置文件中)将maven-Remote te-resources-plugin绑定到捆绑目标。我将maven-Remote te-resources-plugin绑定到配置文件中的流程目标。 我的问题是,在使用概要文件时,我没有获得共享资源(我没有获得target\maven shared a

  • 我已经在我的本地Gitlab服务器上创建了一个远程存储库,我试图推送本地内容,但它要求我提供通行证,但现在是为我的用户 我试过使用我的用户通行证和根通行证,但不起作用,通行证要求什么??

  • 这是我当前的git分支的样子 源自。我已经完成了将我的代码提交到我的分支,现在当我尝试推送我的分支时,我得到以下错误。 我该如何把这根树枝推过去呢?