Выпуск Maven завершается неудачно из-за сбоя git

Я пытаюсь сделать выпуск 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 должна быть репозиторием git! Команда git clone, зарегистрированная непосредственно перед возникновением ошибки, также не содержит ссылки на эту папку.


person Tobb    schedule 30.11.2012    source источник
comment
Как выглядит ваша часть scm в pom?   -  person khmarbaise    schedule 30.11.2012
comment
Как вы решили эту проблему? Мне тоже грозит больше 10 дней.   -  person Shankar    schedule 24.06.2020


Ответы (3)


Просто чтобы добавить к превосходному оригинальному ответу Тобба..
Я заметил, что это было исправлено, но возникли проблемы с получением новая версия для работы. Вы должны добавить ее как зависимость плагина (не проекта), например.

<!-- 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>
person HaveAGuess    schedule 15.12.2012
comment
Отлично, я на самом деле собираюсь собрать для выпуска позже сегодня, я удаляю исправленную банку из своего репозитория maven и пробую это. - person Tobb; 20.12.2012
comment
Работает как шарм :) +1 и принятый ответ, это намного лучше, чем решение, которое у нас было, поскольку оно не требует никаких ручных шагов. - person Tobb; 20.12.2012
comment
На самом деле, это не сработало :s Release:prepare работало, но после release:perform не получилось. Это произошло из-за причуды в нашей настройке, когда мы проверяем локально, а не удаленно при выпуске. Но это навело меня на правильный путь, и обновление версии плагина релиза до 2.4 помогло. - person Tobb; 08.01.2013


Может ли быть проблема с

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/
person Ilion    schedule 30.11.2012
comment
Команда клонирования выдается maven, я ее не контролирую. MyProject — это корень проекта, который на самом деле является репозиторием git. Я попытался запустить команду (хотя и с другой результирующей папкой, так как она выдала другую ошибку) и все равно получаю ту же ошибку. - person Tobb; 30.11.2012
comment
Вы пытались запустить его из командной строки, чтобы посмотреть, что произойдет? - person Ilion; 30.11.2012
comment
Смотрите ответ выше. Странно то, что при выполнении mvn release:perform он останавливался на git push, но после отключения нажатия как части плагина mvn я все еще мог нажать из командной строки. - person Tobb; 30.11.2012
comment
Это сработало, если я просто добавил ':' после C, так что это file://C:\... не сильно помогает, пока maven генерирует команду без ':'. - person Tobb; 30.11.2012
comment
Согласно owengriffin.com/posts/2010/04/15/ у вас должны быть элементы ‹scm›‹/scm›, определенные в вашем файле pom.xml. На что они настроены? - person Ilion; 30.11.2012
comment
‹scm› ‹connection›scm:git:file://${basedir}/‹/connection› ‹/scm› - person Tobb; 30.11.2012
comment
Значит, что-то не так с расширением ${basedir}. Я не уверен, почему это было бы, к сожалению. Вы можете жестко указать путь, но это сделает его менее переносимым. - person Ilion; 30.11.2012
comment
${basedir} в части SCM не рекомендуется и не имеет смысла. Вы должны использовать удаленное репо с Git, которое может быть ссылкой на файл, например file:///...., но оно должно быть вне проекта maven. - person khmarbaise; 30.11.2012
comment
Почему это не рекомендуется? ${basedir} указывает на каталог, содержащий корневой pom. Последняя часть, которую я действительно не понимаю, мы используем удаленный репозиторий, и как я могу иметь репозиторий git для проекта, если репо находится вне maven проект? (Вы говорите, что то, что должно быть клонировано в папку проверки, должно быть из удаленного репо, которое обновляется с помощью mvn release:prepare?) - person Tobb; 30.11.2012
comment
Вы, ребята, исправили это? Я ищу решение и которое я использую mvn 3.0.8 - person Shankar; 24.06.2020