Intellij Maven [Не удается разрешить зависимость]

#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-адрес указывает на группу, я пытался ссылаться на каждого из членов группы по отдельности, и ничего не получалось. Я попробую ваше второе предложение. Это выглядит многообещающе ^^