Github 项目的 Maven 版本因使用错误的 Github 帐户而失败

Posted

技术标签:

【中文标题】Github 项目的 Maven 版本因使用错误的 Github 帐户而失败【英文标题】:Maven release of Github project fails for using wrong Github account 【发布时间】:2013-12-21 00:18:04 【问题描述】:

我正在使用 Maven 在 Github 上发布一个项目。 release:prepare 失败:

[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] remote: Permission to FOO/BAR.git denied to BAZ.
[ERROR] fatal: unable to access 'https://github.com/FOO/BAR.git/': The requested URL returned error: 403

奇怪的是BAZ 是“错误的”github.com 帐户。它是我在 Github 上使用的两个用户名之一,但不是我在 BAR 项目中使用过的一个。假设正确的帐户是FIZZ

SCM 设置未指定用户名:

<scm>
  <connection>scm:git:https://github.com/FOO/BAR.git</connection>
  <url>scm:git:https://github.com/FOO/BAR.git</url>
  <developerConnection>scm:git:https://github.com/FOO/BAR.git</developerConnection>
  ...
</scm>

FOO 是我参与的一个组织。)事实上,我不知道BAZ 到底来自哪里。它不在~/.gitconfig.git/config 中。没有~/.m2/settings.xml 文件。我的 Maven settings.xml 文件没有提到 Github。

如果我在命令行上使用git,它就可以工作——例如push就可以了。

谁能告诉我这可能来自哪里?某个隐藏的配置文件或目录,无论是 Maven 还是 Git 相关的?

或者,记录 Github 用户以在私有本地文件中使用的最佳做法是什么,例如 Maven settings.xml.git/config,这样我就不需要将自己的用户放入构建文件中?

我使用的是 Mac OS X。

【问题讨论】:

【参考方案1】:

最简单的方法是显式使用 ssh url,查看更多详细信息 in this answer。

git remote set-url origin git@github.com:FIZZ/FOO/BAR.git

【讨论】:

谢谢——问题是,HTTPS URL 通过git 可以正常工作,这是一个 Git 设置。这只是与Maven有关。但是,您促使我更加努力地考虑 HTTPS,我想通了。我认为这个答案在它只是避免 HTTPS 的意义上也有效,但我会写下 HTTPS 的愚蠢真实答案。 是关于钥匙串缓存的好点。我更多地考虑在项目 设置中严格和明确,如果可能的话,使用明确的用户名使用 ssh url。当然,除非 Maven 版本由多个用户共享。但即便如此,有人可能会争辩说,拥有一个发布专用的用户帐户将是有利的。 就是这样,很多用户都使用它,如果我把我的用户名放在那里,我认为这会干扰正常的git 操作?没有把握。但同意这是一个很好的做法。 Github 支持每个 repo 多个用户(请参阅help.github.com/articles/how-do-i-add-a-collaborator)。因此,为您的命令行git ops 拥有一个发布用户和一个普通用户(这就是您所说的正常流程吗?)应该没问题,但是最好将 repo 与 repo maven 使用的 repo 正交克隆到释放。【参考方案2】:

终于想通了。问题是我在 OS X 上,并且已经通过 Safari 登录到我的第二个帐户BAZ。这将https://github.com 的用户名和密码保存在钥匙串中。显然,Maven SCM 插件会针对 HTTPS URL 进行咨询,尽管git 不会。清除钥匙串后,它正确提示我输入用户名和密码。

【讨论】:

以上是关于Github 项目的 Maven 版本因使用错误的 Github 帐户而失败的主要内容,如果未能解决你的问题,请参考以下文章

创建maven项目pom.xml出现错误(依赖Missing)

Maven构建期望错误版本的jar [关闭]

如何根据 maven pom 版本运行 github-action 条件?

Jenkins 中的 Maven 发布问题

maven构建报不属于自己提交代码的错误

Git repo 的内部版本号 maven 插件