Maven构建错误 - 无法解析以下工件

4
我想通过maven构建一个spring mvc项目,但出现了以下错误:
The following artifacts could not be resolved: org.aopalliance:com.springsource.org.aopalliance:jar:1.0.0, org.hibernate:hibernate-validator:jar:4.2.0.Beta1: Could not find artifact org.aopalliance:com.springsource.org.aopalliance:jar:1.0.0 in central (http://repo1.maven.org/maven2)

我使用eclipse和m2eclipse插件。我不知道如何添加本地仓库。我发现对于不同版本的eclipse,结果是不同的。有些可以通过,有些失败。我感到困惑。

顺便问一下,在哪里可以找到m2eclipse中使用的maven版本?

更新:现在我可以处理hibernate-validator,但即使我删除了所有spring mvc依赖项,我发现还有许多其他库依赖于com.springsource.org.aopalliance, enter image description here

4个回答

2
检查你的%.m2\repository\org\aopalliance\com.springsource.org.aopalliance\1.0.0\文件夹。如果里面没有com.springsource.org.aopalliance-1.0.0.jar文件,就自己下载并复制到这个文件夹中。

我知道这个解决方案并不是自动可移植的(如果我换了一台新电脑,我必须重新做一遍)。但是,该答案是正确的:)谢谢。 - swdev

1

m2eclipse 中使用的 Maven 版本可以在“Window->Preferences->Maven->Installations”中找到。

看起来你定义的 settings.xml 或 pom 文件中的任何存储库都找不到该工件。尝试添加 Sonatype 存储库,它们有你需要的工件。

在你的 pom.xml 文件中添加:

  <project>
  ...
  <repositories>
    <repository>
      <id>sonatype repo</id>
      <url>https://repository.sonatype.org/content/repositories/central</url>
    </repository>
  </repositories>
  ...
</project>

然而,拥有自己的存储库管理器(nexus、archiva等)是一个好的实践。


抱歉,我仍然不知道如何添加存储库,我应该添加/修改settings.xml吗? - Tom
pluginRepositories 可能仅适用于插件,而不适用于依赖项。 - Raghuram
无论如何,我已经添加了Florian F提供的存储库,但是没有任何变化。 - Tom

1

由于您正在使用Spring构件,因此可以参考this doc。如果您正在使用发布版本的Spring,则可以在settings.xml中添加以下存储库

   <repository>
      <id>com.springsource.repository.maven.release</id>
      <url>http://maven.springframework.org/release/</url>
      <snapshots>
          <enabled>false</enabled>
       </snapshots>
   </repository>

[编辑1:根据评论]

aopalliance的groupId/projectId似乎表明它在spring企业捆绑包存储库中。可以从以下存储库URL访问其内容。

<url>http://repository.springsource.com/maven/bundles/release/</url>

关于 hibernate-validator,由于它是一个 beta 版本,可能不会在常规仓库中提供。您可以从以下地址下载:

<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>

谢谢。但是这种方法不起作用,我仍然得到错误:缺少构件org.aopalliance:com.springsource.org.aopalliance:jar:1.0.0:compile,缺少构件org.hibernate:hibernate-validator:jar:4.2.0.Beta1:compile。 - Tom
@Tom。你可能在代理服务器后面吗?如果是这样,你需要在你的settings.xml中添加一个代理部分,并提供代理信息。 - Raghuram
Raghuram,我没有使用代理,也没有代理服务器。 - Tom
@Tom。编辑了答案,提供了另外几个存储库的URL,其中包含依赖项。您可以尝试使用这些而不是之前指定的内容,看看是否有帮助。 - Raghuram
Hibernate的存储库URL有效。我发现我无法访问http://repository.springsource.com/maven/bundles/release/,所以我认为这就是我遇到构建错误的原因。 - Tom

1
你需要在pom.xml中添加“external”仓库:
<repository>
    <id>com.springsource.repository.bundles.external</id>
    <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>

我的pom.xml中完整的存储库标签如下:

<repositories>
    <repository>
        <id>com.springsource.repository.maven.release</id>
        <url>http://repo.springsource.org/release/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>com.springsource.repository.bundles.release</id>
        <url>http://repository.springsource.com/maven/bundles/release</url>
    </repository>
    <repository>
        <id>com.springsource.repository.bundles.external</id>
        <url>http://repository.springsource.com/maven/bundles/external</url>
    </repository>
</repositories>

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