2013-04-25 4 views
3

Это, вероятно, вопрос новичков, но я новичок в Maven.Ошибка при попытке «mvn clean install» Плагин репликации Gerrit

Я пытаюсь создать плагин репликации Геррит, в "since the master branch (and thus Gerrit 2.5) no longer supports replication out of the box."

Так что я сделал клон https://gerrit.googlesource.com/plugins/replication и казнили mvn clean install внутри нового каталога. Сообщение об ошибке:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building replication 1.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The POM for com.google.gerrit:gerrit-plugin-api:jar:2.6-SNAPSHOT is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.840s 
[INFO] Finished at: Thu Apr 25 17:30:10 BRT 2013 
[INFO] Final Memory: 6M/105M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project replication: Could not resolve dependencies for project com.googlesource.gerrit.plugins.replication:replication:jar:1.1-SNAPSHOT: Failure to find com.google.gerrit:gerrit-plugin-api:jar:2.6-SNAPSHOT in https://gerrit-api.commondatastorage.googleapis.com/release/ was cached in the local repository, resolution will not be 
reattempted until the update interval of gerrit-api-repository has elapsed or updates are forced -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 

Похоже, что этот URL не является действительным: https://gerrit-api.commondatastorage.googleapis.com/release/ - но, как я сказал, что я новичок в Maven, так что я не уверен, как поступить. Я провел некоторое исследование, но я не знаю, что я ищу.

Любой указатель будет высоко оценен. Заранее спасибо.

ответ

1

Пара вещей -

  1. Вы пропускаете Геррит-плагин-api.jar. В настоящее время это не предусмотрено выше по течению, поэтому вы должны сами создать его. Я считаю, что запуск mvn install из репозитория Gerrit упакует и добавит эту банку в вашу систему.

  2. Вы не хотите запускать install, вы просто хотите запустить package на плагине. mvn package поместит .jar в папку target /, которую вы затем скопируете в свою папку плагинов внутри вашей установки Gerrit.

Удачи вам!

+0

Брэд, я попробую это через пару часов, а затем вернусь к вам. Большое спасибо за ответ. :) –

+0

Я принимаю ваш ответ, так как это похоже на путь. К сожалению, в последнее время Geroth repos сталкивается с проблемами (подробности ниже). Спасибо, в любом случае! –

1

Как упоминается Брэд, мне не хватает gerrit-plugin-api.jar. К сожалению, я не смог его построить, поскольку в последнее время проблемы с Gerrit, похоже, сталкиваются с проблемами, как упоминалось в других потоках (this one, for instance - от двух дней назад).

Во всяком случае, ниже мои дополнительные шаги, основываясь на ответе Брэда (надеюсь, это может помочь другим):

git clone https://gerrit.googlesource.com/gerrit 
cd gerrit/gerrit-plugin-api/ 
mvn clean install 

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Gerrit Code Review - Plugin API 2.7-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The POM for com.google.gerrit:gerrit-sshd:jar:2.7-SNAPSHOT is missing, no dependency information available 
[WARNING] The POM for com.google.gerrit:gerrit-httpd:jar:2.7-SNAPSHOT is missing, no dependency information available 
[WARNING] The POM for com.google.gerrit:gerrit-pgm:jar:2.7-SNAPSHOT is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.342s 
[INFO] Finished at: Fri Apr 26 10:52:54 BRT 2013 
[INFO] Final Memory: 5M/105M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project gerrit-plugin-api: Could not resolve dependencies for project com.google.gerrit:gerrit-plugin-api:jar:2.7-SNAPSHOT: The following artifacts could not be resolved: com.google.gerrit:gerrit-sshd:jar:2.7-SNAPSHOT, com.google.gerrit:gerrit-httpd:jar:2.7-SNAPSHOT, com.google.gerrit:gerrit-pgm:jar:2.7-SNAPSHOT: Failure to find com.google.gerrit:gerrit-sshd:jar:2.7-SNAPSHOT in https://gerrit-maven.commondatastorage.googleapis.com was cached in the local repository, resolution will not be reattempted until the update interval of gerrit-maven has elapsed or updates are forced -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 

EDIT 

Эти шаги, которые работали для меня, в случае, если кто-то еще лица та же проблема.

git clone https://gerrit.googlesource.com/gerrit 

Проверьте доступные 'версии'

git branch -r 
git checkout -b 2.5 origin/stable-2.5 

шаги не работают на главном филиале в моем окружении, и я использую 2,5 ...
Так что да, 2.5.

cd gerrit 
mvn clean install 

Это восстановит всю вселенную, пойдет за чашкой кофе. :)
.. когда сделано

cd gerrit-plugin-api/ 
mvn package 

Это также занимает некоторое время ...
Если все идет хорошо, вы можете скопировать банку в целевую папку, например:

cp target/<large-name>.jar ~/replication.jar 

наконец установить (с ~):

ssh -p 29418 localhost gerrit plugin install -n name \ - <replication.jar 

Подробнее о том, как установить Геррит плагины here ,

Дело в том, что теперь я получаю другую ошибку, что-то вроде:

«Привязка к (что-то) уже был настроен на (что-то)»

Но это другая история/нить/пост ...
Спасибо и удачи!

+0

Вы пытаетесь построить только плагин-api.jar, но он имеет зависимости от других пакетов gerrit (com.google.gerrit: gerrit-sshd: jar: 2.7-SNAPSHOT и т. Д.). Поднимите каталог в корневую папку gerrit и запустите 'mvn install' – Brad

+0

Я пробовал это, и я получил ту же ошибку.Похоже, что это может работать с ветвью 2.6 tho (я на ведущей ветке), согласно этой теме: http://bit.ly/11K3pSI. Я сейчас пытаюсь. :-) –

0

Сделайте mvn -P all clean install на верхнем уровне, а не внутри gerrit-plugin-api.

0

Самый быстрый способ исправить - это изменить pom.xml и использовать версию, которая не является моментальным снимком. Я пытался создать проект удаления для ветки stable-2.6 и столкнулся с той же проблемой. Все, что нужно сделать, это изменить Геррит-ApiVersion:

 <Gerrit-ApiType>plugin</Gerrit-ApiType> 
- <Gerrit-ApiVersion>2.6-SNAPSHOT</Gerrit-ApiVersion> 
+ <Gerrit-ApiVersion>2.6-rc2</Gerrit-ApiVersion> 
    </properties> 
    <name>Delete Project Gerrit Plugin</name> 
+0

Это подчеркивает еще одну проблему, устанавливающую эти плагины - хотя основное репо-репозиторий выполняет довольно распространенную стратегию «по ветру и тегам», плагины, с которыми я имел дело, вообще не ветвятся или не помечены. Это означает, что вам нужно отследить историю фиксации файла pom.xml плагина с помощью свойства Gerrit-ApiVersion в следующей версии моментального снимка после стабильного выпуска Gerrit, который вы используете. Например. для Gerrit 2.7, я должен проверить первый коммит в проекте delete, где Gerrit-ApiVersion был привязан к 2.8-SNAPSHOT. – RCross

0

здание прочь @ ответ Conaaando, я выполнял эти точные шаги, и успешно я использую плагин. Шаги любезно http://asheepapart.blogspot.com/2013/12/how-to-build-gerrit-replication-plugin.html

git clone --recursive https://gerrit.googlesource.com/gerrit 

Вам нужен --recursive здесь, потому что на самом деле плагины Git подмодуль и не будет в противном случае будет клонирован вместе с репо.

Если вы уже клонировали, вы можете запустить git submodule init; git submodule update

cd gerrit 
git checkout -b stable-2.7 origin/stable-2.7 
mvn install -DskipTests=true -Dmaven.javadoc.skip=true 

Это не обязательно, чтобы пропустить тесты или порождающие Java Doc, но это позволит значительно улучшить время компиляции и уменьшить количество Maven использования памяти

cd gerrit-plugin-api 
mvn package -Dmaven.javadoc.skip=true 

Это создает банку, которая будет необходима для плагина репликации, чтобы получить встроенный

cd plugins/replication 
mvn package -Dmaven.javadoc.skip=true 

На данный момент вы собрали и упаковали банку репликации! Все, что вам нужно сделать, это зарегистрировать его на сервере Gerrit. Для простоты я буду притворяться, что ваш сервер gerrit работает на gerrit.example.com. Эти шаги скопируют банку репликации на ваш сервер обзора и затем предписывают серверу проверки установить плагин из этого скопированного местоположения.

scp target/replication-2.7.jar gerrit.example.com:/tmp/ 
ssh -p 29418 gerrit.example.com gerrit plugin install -n replication /tmp/replication-2.7.jar