Я пытаюсь интегрировать nexus в проект maven и имею проблему, надеясь, что кто-то здесь может помочь.Можно загрузить файл jar, используя maven + local repo, но не используя maven + nexus?
Изначально у меня был файл Maven settings.xml
использовать локальное хранилище только:
<settings>
<localRepository>C:\\r</localRepository>
...
</settings>
Это прекрасно работает и все зависимости для моего проекта загружаются в локальное хранилище. Я проверил это, удалив каталог для maven-settings-2.2.1
артефакта и снова работает mvn -U dependency:list
:
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom (3 KB at 11.3 KB/sec) Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar (48 KB at 509.5 KB/sec)
виден выше, что файл pom.xml
и .jar
для maven-settings-2.2.1
артефакта был загружен.
Далее я попытался настройки моего Maven проекта, чтобы указать на хранилище связующего, что я настроил:
<settings>
<localRepository>C:\\r</localRepository>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://<server>:<port>/nexus/content/groups/public</url>
</mirror>
</mirrors>
...
</settings>
Я удалил maven-settings-2.2.1
артефактов из моего локального хранилища, и снова побежал mvn -U dependency:list
:
Downloading: http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom Downloaded: http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom (3 KB at 17.0 KB/sec) Downloading: http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar [ERROR] Failed to execute goal on project : Could not resolve dependencies for project : The following artifacts could not be resolved: org.apache.maven:maven-settings:jar:2.2.1: Could not find artifact org.apache.maven:maven-settings:jar:2.2.1 in nexus (http://:/nexus/content/groups/public) -> [Help 1]
На этот раз nexus может загрузить файл pom.xml
артефакт maven-settings-2.2.1
, но не может загрузить файл .jar
. Я проверил на сервере nexus, и когда я просматриваю удаленное содержимое «центрального» репозитория, я вижу артефакты maven-settings-2.2.1
(оба файла pom.xml
и .jar
), но в локальном хранилище неактивных я вижу только файл pom.xml
.
Так что я посмотрел на документацию связующей (см http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html) и настроить мои настройки Maven с профилем связующей как предложено:
<settings>
... as before ...
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>
Опять я удалил любую локальную копию maven-settings-2.2.1
артефакта, и побежал mvn -U dependency:list
:
Downloading: http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom Downloaded: http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom Downloading: http://:/nexus/content/groups/public/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar [ERROR] Failed to execute goal on project : Could not resolve dependencies for project : The following artifacts could not be resolved: org.apache.maven:maven-settings:jar:2.2.1: Could not find artifact org.apache.maven:maven-settings:jar:2.2.1 in nexus (http://:/nexus/content/groups/public) -> [Help 1]
Как и раньше, pom.xml
был загружен из связующих, но не файл .jar
. Как и раньше, когда я проверяю локальное хранилище на сервере nexus, присутствует файл pom.xml
, но не файл .jar
.
Как испытание здравомыслия, я удалил конфигурацию нексуса из моих мавенный settings.xml
, удален maven-settings-2.2.1
артефактов из моего локального хранилища, и попытался снова:
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar
На этот раз, как `.jar файл pom.xml
и были загружены напрямую.
Так что я не уверен, что мне нужно сделать, чтобы обойти эту проблему: при использовании локального хранилища и получить Maven для загрузки зависимостей непосредственно, я могу загрузить оба pom.xml
и .jar
файлов для maven-settings-2.2.1
артефакта. Когда я добавляю свой сервер nexus в микс, только pom.xml
загружается nexus.
Это проблема конфигурации сервера Nexus или проблема конфигурации maven?
Спасибо за ответ. Я удаляю артефакты из своего локального репо, чтобы затем maven был вынужден получить эти артефакты в другом месте, либо непосредственно из Maven Central, либо опосредованно через мой сервер nexus, в зависимости от конфигурации. Значит, я правильно понял эту концепцию? –
«http: //:/nexus/...» в приведенной выше цитате была ошибкой cut-n-paste, она должна быть «http: //, server>:/nexus/...». Он работает, потому что другие артефакты загружаются, а не файл maven-settings-2.2.1 jar. –
это сработало, потому что вы уже создали и загрузили его в локальное репо уже и потому, что Maven может найти их в локальном репо, он не будет загружать его. Просто, чтобы быть уверенным ... вы действительно видите ': ' или вы просто маскируете его? Я ожидаю, что вы скажете мне, что на самом деле это настоящее имя хоста и номер порта. И пытались ли вы убедиться, что ваш репозиторий nexus действительно работает? Я упомянул способ проверки –