Intellij Maven [无法解决依赖关系]
Intellij Maven [Cannot resolve dependency]
我在我的服务器上设置了 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 存储库,它工作得很好。
This is what I see on the IDE
感谢您的宝贵时间!
编辑:
其中一个问题是,当 运行ning mvn install 或尝试通过 intellij 编译时,我的依赖项调用了不同的 repo。
将以下代码添加到 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]`
我从 cmd 运行 命令 mvn dependency:purge-local-repository
成功构建,但是,intellij 仍然给我一个错误:https://prnt.sc/unxppz
您在 Nexus 中的 JAR 文件以 ..jar
结尾,因此您在上传它们时可能犯了错误(两个点而不是一个)。
您需要在 pom.xml
中添加
<distributionManagement>
<snapshotRepository>
<repository>
<id>you-repository-name</id>
<url>http://you-repository-url</url>
</repository>
<snapshotRepository>
</distributionManagement>
我觉得还可以。你检查过docs了吗?也许您需要先设置 Maven。为确保这是一个 Maven 问题,还请尝试 运行 从 Intellij 外部构建您的 Maven —— 这只是一种常见的做法,因为我怀疑 Intellij 是否与它有任何关系。
将您的存储库 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>
我在我的服务器上设置了 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 存储库,它工作得很好。 This is what I see on the IDE
感谢您的宝贵时间!
编辑: 其中一个问题是,当 运行ning mvn install 或尝试通过 intellij 编译时,我的依赖项调用了不同的 repo。 将以下代码添加到 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]`
我从 cmd 运行 命令 mvn dependency:purge-local-repository
成功构建,但是,intellij 仍然给我一个错误:https://prnt.sc/unxppz
您在 Nexus 中的 JAR 文件以 ..jar
结尾,因此您在上传它们时可能犯了错误(两个点而不是一个)。
您需要在 pom.xml
中添加<distributionManagement>
<snapshotRepository>
<repository>
<id>you-repository-name</id>
<url>http://you-repository-url</url>
</repository>
<snapshotRepository>
</distributionManagement>
我觉得还可以。你检查过docs了吗?也许您需要先设置 Maven。为确保这是一个 Maven 问题,还请尝试 运行 从 Intellij 外部构建您的 Maven —— 这只是一种常见的做法,因为我怀疑 Intellij 是否与它有任何关系。
将您的存储库 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>