Maven无法解析依赖关系。

6

我尝试长时间构建一个项目,但是出现以下错误:

在该项目上执行目标时失败,以下工件无法解析:

org.restlet.jee:org.restlet:jar:2.1.7,

org.restlet.jee:org.restlet.ext.servlet:jar:2.1.7,

org.restlet.jee:org.restlet.ext.spring:jar:2.1.7,

org.restlet.jee:org.restlet.ext.freemarker:jar:2.1.7,

org.restlet.jee:org.restlet.ext.xml:jar:2.1.7:

找不到 org.restlet.jee:org.restlet:jar:2.1.7

http://repo1.maven.org/maven2已被缓存到本地存储库中,解决方案将不会重新尝试,直到中央的更新间隔已经过去或者强制更新 -> [帮助 1]

我的 pom.xml 有以下依赖项

<dependency>
  <groupId>org.restlet.jee</groupId>
  <artifactId>org.restlet.ext.servlet</artifactId>
  <version>${org.restlet.version}</version>
</dependency>

该存储库的定义如下所示:

   <repository>
        <id>central</id>
        <name>Maven Plugin Repositoty</name>
        <url>http://repo1.maven.org/maven2</url>
    </repository>
2个回答

10
为了找到依赖项,通常可以从 mvnrepository.com 网站开始。该网站不仅可以帮助您确定要使用的正确 groupId、artifactId 和版本,还可以指示您在哪里找到所需的 artifact,因为并非所有 artifact 都在 Maven 中央仓库中。
在这种情况下,该网站会告诉您它们在 maven.restlet.org 存储库中,如果您在浏览器中访问该 URL,您将看到这确实是真的。因此,在找到 artifact 之前,您需要在 pom 或 settings.xml 中添加该存储库。
<repositories>
  <repository>
    <id>maven.restlet.org</id>
    <name>maven.restlet.org</name>
    <url>http://maven.restlet.org</url>
  </repository>        
</repositories>    

那就这样吧。

1
截至2023年,<url>https://maven.restlet.org</url>无法访问,但浏览它会跳转到一个替代网址<url>https://maven.restlet.talend.com</url>,该网址似乎能够正确解析。 - Peteris
实际上,mvnrepository.org似乎现在表明它可以在spring插件仓库的https://repo.spring.io/plugins-release/中找到。然而,这似乎并不是真的:/ - Gimby

1

首先确保这些构件在Maven中央仓库中可用。

然后从您本地的.m2存储库中删除org/restlet/jee文件夹并重新导入。如果这些JAR文件在Maven中央仓库中可用,它们将再次下载到您的本地.m2中。

在这里可以在Maven中央仓库中找到org.restlet.jee。

如果您仍然遇到问题,您需要做出选择:

  1. 查找另一个具有所需内容的存储库。
  2. 转到restlet页面,手动下载JAR文件,并将其添加到您的本地.m2中。
  3. 停止使用该库并寻找替代方案。

我按照您的建议进行了操作。我能够在仓库中找到2.1.7版本。但我仍然遇到相同的错误。 - Potney Switters
我甚至将版本更改为2.0.0,但仍然出现以下错误: 找不到org.restlet.jee:org.restlet.ext.servlet:jar:2.2.0的POM,没有可用的依赖项信息 正在下载:http://repo1.maven.org/maven2/org/restlet/jee/org.restlet.ext.spring/2.2.0/org.restlet.ext.spring-2.2.0.pom 但是您可以看到该工件在这里https://maven-repository.com/artifact/org.restlet.jee/org.restlet/2.2.0 我有点困惑。 - Potney Switters
2
在Maven Central中不存在org.restlet。 - khmarbaise
现在我明白了。https://maven-repository.com/artifact/org.restlet.jee/org.restlet/2.1.7 在添加了以下内容后,我按照相同的步骤进行了操作 <repository> <id>opencast-public</id> <url>http://nexus.virtuos.uos.de/nexus/content/repositories/public//nexus/content/repositories/public/</url> </repository> 仍然遇到相同的错误。 - Potney Switters
@duffymo,我还能为您做些什么吗? - Potney Switters
1
@duffymo mvnrepository 还显示了非中央存储库的构件。在这种情况下,org.restlet.jee 包位于 http://maven.restlet.org/ 存储库中,因此 khmarbaise 是正确的。 - Gimby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接