#java #maven #intellij-idea #pom.xml #nexus
#java #maven #intellij-idea #pom.xml #nexus
Вопрос:
Я установил Nexus на своем сервере (api.lielamar.com ) и загрузил мой первый проект под названием PacketManager. Вы можете просмотреть его здесь: https://api.lielamar.com/#browse/browse:maven-public
По какой-то причине, когда я пытаюсь импортировать его через pom.xml это просто не работает. Я довольно новичок в Maven и очень новичок в Nexus, поэтому это может быть вопрос новичка. Я попытался использовать Google и не смог найти прямого ответа, который сработал для меня.
Вот мой код:
<repositories>
<repository>
<id>lielamar-repo</id>
<url>https://api.lielamar.com/service/rest/repository/browse/maven-public/</url>
</repository>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.8.8-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.lielamar.packetmanager</groupId>
<artifactId>PacketManager</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
Я также использую репозиторий spigot, который работает просто отлично.
Это то, что я вижу в IDE
Спасибо за ваше время!
Редактировать: Одна из проблем заключалась в том, что моя зависимость вызывала другое репозиторий при запуске mvn install или попытке компиляции через intellij. После добавления следующего кода в setting.xml , я начал получать другую ошибку:
<mirrors>
<mirror>
<id>lielamar-mirror</id>
<name>lielamar mirror</name>
<url>https://api.lielamar.com/service/rest/repository/browse/maven-public/</url>
<mirrorOf>lielamar-api</mirrorOf>
</mirror>
</mirrors>
Ошибка, которую я получал после добавления приведенного выше кода, была:
[ERROR] Failed to execute goal on project TestPlugin:
Could not resolve dependencies for project com.lielamar.testplugin:TestPlugin:jar:1.0:
Failure to find com.lielamar.packetmanager:PacketManager:jar:1.0 in
https://api.lielamar.com/service/rest/repository/browse/maven-public/ was cached in the local repository,
resolution will not be reattempted until the update interval of lielamar-mirror has elapsed or updates are forced -> [Help 1]`
Я запускаю команду mvn dependency:purge-local-repository
из cmd, и она была успешно собрана, однако intellij по-прежнему выдает мне ошибку: https://prnt.sc/unxppz
Комментарии:
1. что он говорит, когда вы создаете его с помощью maven? он даже пытается загрузить ресурсы? пожалуйста, добавьте ошибку maven к вашему вопросу..
2. prnt.sc/unwhfc — это ошибка, когда я запускаю установку mvn. Я не знаю, почему он пытался получить доступ к зависимости через другой репозиторий.
Ответ №1:
Ваши файлы JAR в Nexus заканчиваются на ..jar
, поэтому вы, вероятно, допустили ошибку при их загрузке (две точки вместо одной).
Комментарии:
1. Большое вам спасибо за быстрый ответ. Я не заметил второго «.» и исправил это, однако это все еще происходит. Я попытался использовать ссылку, которую предоставляет Nexus ( api.lielamar.com/repository/maven-public ) и прямой ( api.lielamar.com/service/rest/repository/browse/maven-releases ) но ни то, ни другое не сработало. Вот что происходит: prnt.sc/unufx0
2. Итак, с первым URL-адресом вы пробовали такую сборку
mvn clean verify
? Какие ошибки вы получаете при запуске сборки?3. Это ошибка, которую я получаю: [ОШИБКА] Не удалось выполнить цель в проекте TestPlugin: Не удалось разрешить зависимости для проекта com.lielamar.testplugin: TestPlugin: jar: 1.0: Не удалось найти com.lielamar.packetmanager:PacketManager: jar: 1.0 в repo.maven.apache.org/maven2 был кэширован в локальном репозитории, разрешениеповторная попытка не будет предпринята до тех пор, пока не истечет интервал обновления центра или обновления не будут принудительными -> [Справка 1] понятия не имею, почему = [
4. У вас есть
settings.xml
? Если да, содержит ли он<mirror>
запись?5. Я добавил его прямо сейчас. Даже после добавления settings.xml , тег <mirrors> и тег <mirror> внутри него со всей информацией, я все равно получаю сообщение об ошибке. По какой-то причине maven пытается получить мою зависимость от центрального репозитория. Вот мой settings.xml : prnt.sc/unxhre
Ответ №2:
Вам нужно добавить в свой pom.xml
<distributionManagement>
<snapshotRepository>
<repository>
<id>you-repository-name</id>
<url>http://you-repository-url</url>
</repository>
<snapshotRepository>
</distributionManagement>
Комментарии:
1. prnt.sc/unvy1t Я получаю сообщение об ошибке, в котором говорится, что вы не можете использовать репозиторий в snapshotRepository. Я все же дам ему поиск в Google!:)
Ответ №3:
Для меня это выглядит нормально. Вы проверили документы? Возможно, вам нужно сначала настроить Maven. Чтобы убедиться, что это проблема Maven, также попробуйте запустить сборку Maven из-за пределов Intellij — обычная практика, поскольку я сомневаюсь, что Intellij имеет к этому какое-либо отношение.
Комментарии:
1. Я уже прочитал документы, но, поскольку это моя настоящая первая встреча с maven, там все было слишком сложно. Я все же перечитаю это!
Ответ №4:
Замените URL-адрес вашего репозитория на тот, который у https://api.lielamar.com/repository/maven-releases/
вас указывает на группу, если вы проверяете nexus. Возможно, потребуется ссылаться на группу по-другому, если на них вообще можно ссылаться.
или вам может понадобиться что-то вроде этого https://docs.gitlab.com/ee/user/packages/maven_repository/#group-level-maven-endpoint
<repositories>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.com/api/v4/groups/GROUP_ID/-/packages/maven</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url>
</repository>
<snapshotRepository>
<id>gitlab-maven</id>
<url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url>
</snapshotRepository>
</distributionManagement>
Комментарии:
1. Это правильно. Однако первый URL-адрес указывает на группу, я пытался ссылаться на каждого из членов группы по отдельности, и ничего не получалось. Я попробую ваше второе предложение. Это выглядит многообещающе ^^