我在没有安装 git 命令行的 Windows 机器上。我已经安装了 GitExtensions 和一个 EGit,这对我来说已经足够了(直到现在)。
现在我想按照本指南对 BinTray 执行 maven 发布: 使用 Github、Bintray 和 maven-release-plugin 发布版本
跑步:
mvn -Prelease release:prepare
产生这个输出:
[INFO] ------------------------------------------------------------------------
[INFO] Building xxxxx 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-release-plugin:2.4.1:prepare (default-cli) @ xxxxx ---
[INFO] Resuming release from phase 'scm-commit-release'
[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\jbr\git\yyyyyyyyyyyyyyy
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.770 s
[INFO] Finished at: 2015-09-12T20:17:24+02:00
[INFO] Final Memory: 20M/989M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.1:prepare (default-cli) on project xxxxx: Unable to commit files
[ERROR] Provider message:
[ERROR] The git-add command failed.
[ERROR] Command output:
[ERROR] 'git' is not recognized as an internal or external command,
[ERROR] operable program or batch file.
绝对公平,我从不使用 windows shell 中的 git 命令,也从不设置 pageant.exe 的东西。(有关详细信息,请参阅“为什么 git 在 Windows 下无法记住我的密码”问题的答案</a>)。
我的第二个想法是使用maven-scm-provider-jgit不依赖于git
命令行。
现在的输出是:
[INFO] ------------------------------------------------------------------------
[INFO] Building xxxxx 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-release-plugin:2.4.1:prepare (default-cli) @ xxxxx ---
[INFO] Change the default 'git' provider implementation to 'jgit'.
[INFO] Resuming release from phase 'scm-commit-release'
[INFO] Checking in modified POMs...
[INFO] push changes to remote... refs/heads/master:refs/heads/master
[INFO] fetch url: git@github.com:jmini/yyyyyyyyyyyyyyy.git
[INFO] push url: git@github.com:jmini/yyyyyyyyyyyyyyy.git
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.1:prepare (default-cli) on project xxxxx: An error is occurred in the checkin process: Exception while executing SCM command. JGit checkin failure! git@github.com:jmini/yyyyyyyyyyyyyyy.git: Auth fail -> [Help 1]
好多了,但仍然没有运气。
我的猜测是未加载私钥和密码。我应该如何配置它们?
这个答案表明,对于某些 SCM 提供商,可以<servers>
在settings.xml
. 存储库的域名应用作<id>
. 根据在 中scm:git:ssh://git@bitbucket.org/{account}/{project}
使用的最后一条评论<developerConnection>
,此条目在settings.xml
:
<server>
<id>bitbucket.org</id>
<privateKey>/c/Users/neil.hunt/.ssh/id_rsa</privateKey>
</server>
JGit SCM 提供程序是否支持此构造?
在搜索“Auth failed”错误时,我发现了这个相关问题(plain JGit,no maven plugin):