【问题标题】:Maven release fails due to git failure由于 git 失败,Maven 发布失败
【发布时间】:2012-11-18 21:22:47
【问题描述】:

我正在尝试发布 mvn,但由于 git 的问题而失败。我之前已经多次这样做了,没有这个问题,我真的不明白为什么/如何发生这种情况。

我第一次得到它是做 mvn release:prepare,但通过将下面显示的最后一行添加到我的 root-pom 来解决它:

    <artifactId>maven-release-plugin</artifactId>
    <configuration>
      <preparationGoals>clean install</preparationGoals>
      <pushChanges>false</pushChanges>

但是现在,当我尝试执行 mvn release:perform 时,我再次收到错误消息:

[INFO] Executing: cmd.exe /X /C "git clone file://C\Users\torbjornk\nfr\MyProject/ C:\Users\torbjornk\nfr\MyProject\target\checkout"
[INFO] Working directory: C:\Users\torbjornk\nfr\MyProject\target
[ERROR] The git-clone command failed.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE  
[INFO] ------------------------------------------------------------------------
[INFO] Unable to checkout from SCM
Provider message:
The git-clone command failed.
Command output:
fatal: 'C:/Program Files (x86)/Git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我不明白我的 git-installation-folder 应该是一个 git 存储库的想法!在错误发生之前记录的 git clone-command 也不包含对此文件夹的引用..

【问题讨论】:

  • 你在 pom 中的 scm 部分是什么样子的?
  • 你是如何解决这个问题的?我也面临超过 10 天。

标签: git maven maven-release-plugin


【解决方案1】:

只是添加到Tobb 的优秀原始答案..
我注意到这已得到修复,但在使新版本正常工作时遇到问题.. 您必须将其添加为插件(而不是项目)依赖项,例如。

<!-- Appengine deploy at end of mvn release:perform -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.2.2</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <version>1.8.1</version>
        </dependency>
    </dependencies>
</plugin>

【讨论】:

  • 太好了,我实际上要为今天晚些时候发布而构建,我从我的 maven-repo 中删除了固定的 jar,然后试试这个。
  • 像魅力一样工作:) +1 并接受了答案,它比我们的解决方案要好得多,因为它不涉及任何手动步骤。
  • 实际上,并没有那么好:s release:prepare 工作,但在 release:perform 时,它失败了。这是由于我们设置中的一个怪癖,我们在发布时从本地而不是远程签出。但是,它让我走上了正轨,将发布插件的版本更新到 2.4 最终成功了。
【解决方案2】:

原来这是以前遇到的错误。这是由于 maven-scm-provider-git 中的一个错误,它导致对本地存储库的文件引用丢失它在“C:...”中的 ':'。 (这里描述了这个错误:http://jira.codehaus.org/browse/SCM-662

我们通过将固定版本的 jar 复制到本地 maven 存储库来解决此问题,但我最近清除了本地存储库以查看我们的 Nexus 存储库是否正常运行,因此得到了未修复版本的 jar我的本地仓库(doh!)

因此,将 jar 的固定版本添加到我的本地 maven 存储库中,git clone-command 再次包含一个 ':',然后事情就开始工作了 :)

编辑:此错误已在 maven 发布插件的 2.4 版中修复。

【讨论】:

    【解决方案3】:

    会不会是个问题

    file://C\Users\torbjornk\nfr\MyProject/
    

    ?你不能只使用常规路径克隆吗?

    C:\Users\torbjornk\nfr\MyProject/
    

    如果不是,我认为应该是:

    file:///C:/Users/torbjornk/nfr/MyProject/
    

    如果这不起作用,请尝试以下方法之一:

    file://localhost/c|/Users/torbjornk/nfr/MyProject/
    file:///c|/Users/torbjornk/nfr/MyProject/
    file://localhost/c:/Users/torbjornk/nfr/MyProject/
    

    【讨论】:

    • 克隆命令是maven发出的,我没管。 MyProject 是项目根目录,它实际上是一个 git 存储库。我尝试运行命令(尽管使用不同的结果文件夹,因为它给出了不同的错误),但仍然得到相同的错误..
    • 你试过从命令行运行它看看会发生什么吗?
    • 见上面的答案。奇怪的是,在执行 mvn release:perform 时,它在 git push 处停止,但是在作为 mvn 插件的一部分禁用推送之后,我仍然可以从命令行推送..
    • 如果我只是在 C 之后添加一个 ':' 就可以了,所以它的 file://C:\... 并没有多大帮助,只要 maven 生成没有':'。
    • 根据owengriffin.com/posts/2010/04/15/…,您应该在 pom.xml 中定义 元素。他们的目标是什么?
    猜你喜欢
    • 2016-09-21
    • 1970-01-01
    • 2013-02-20
    • 2014-08-05
    • 2020-01-16
    • 2014-02-17
    • 2013-03-11
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多