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 的愚蠢真实答案。
是关于钥匙串缓存的好点。我更多地考虑在项目 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)