12

从今天早上开始,我在进行 Maven 构建时遇到了以下错误。昨天和今天没有具体的变化。有人可以帮我解决这个问题吗?我尝试清除所有本地存储库,将杰克逊版本更改为 1.9.10。令人惊讶的是,这适用于我在同一版本上工作的同事。

[ERROR] Failed to execute goal on project netvogue-database-api: Could not resolve     dependencies for project org.netvogue.server:netvogue-database-api:jar:1.0-SNAPSHOT: Failed to collect dependencies for [org.springframework.data:spring-data-neo4j-rest:jar:2.1.0.RC4 (compile), org.codehaus.jackson:jackson-jaxrs:jar:1.8.3 (compile), org.codehaus.jackson:jackson-mapper-asl:jar:1.8.3 (compile), org.neo4j:neo4j-kernel:jar:tests:1.8.RC1 (test), org.neo4j:neo4j-cypher:jar:1.8.RC1 (compile), com.amazonaws:aws-java-sdk:jar:1.3.10 (compile), org.imgscalr:imgscalr-lib:jar:4.2 (compile), org.springframework:spring-context:jar:3.1.2.RELEASE (compile), org.springframework.security:spring-security-config:jar:3.1.2.RELEASE (compile), org.springframework.security:spring-security-web:jar:3.1.2.RELEASE (compile), org.slf4j:slf4j-api:jar:1.5.10 (compile), org.slf4j:jcl-over-slf4j:jar:1.5.10 (runtime), org.slf4j:slf4j-log4j12:jar:1.5.10 (runtime), log4j:log4j:jar:1.2.16 (compile), junit:junit:jar:4.7 (test)]: No versions available for org.codehaus.jackson:jackson-core-asl:jar:[1.8,1.9) within specified range -> [Help 1]
4

4 回答 4

12

杰克逊的jackson-core-asl maven-metadata.xml文件似乎已损坏。

当 Maven 试图从一个范围内解析依赖版本时,它必须查看该maven-metadata.xml文件以确定它可以选择的候选版本。目前该文件如下所示:

<metadata modelVersion="1.1.0">
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-asl</artifactId>
  <versioning>
    <latest>1.1.0</latest>
    <release>1.1.0</release>
    <versions>
      <version>1.1.0</version>
    </versions>
    <lastUpdated>20120928142709</lastUpdated>
  </versioning>
</metadata>

这表明版本范围可以选择的唯一合法版本是1.1.0. 作为在检查文件之前该文件最有可能看起来的示例jackson-core-lgpl maven-metadata.xml

<metadata>
<groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-lgpl</artifactId>
  <version>0.9.8</version>
  <versioning>
    <versions>
      <version>0.9.8</version>
      <version>0.9.7</version>
      <version>0.9.9</version>
      <version>0.9.9-2</version>
      <version>0.9.9-3</version>
      <version>0.9.9-4</version>
      <version>0.9.9-5</version>
      <version>0.9.9-6</version>
      <version>1.0.0</version>
...

如前所述,您可以对特定版本的 Jackson 进行硬编码,从而缩短版本解析并避免读取maven-metadata.xml文件。

于 2012-10-01T07:52:45.410 回答
6

正如yegor256所指出的,最近遇到这个问题的人,它可能是由亚马​​逊AWS引起的。只需将您的 aws-java-sdk 更改为较新的版本(当前为 1.3.20),问题就会消失。

于 2012-10-01T14:29:32.160 回答
2

我应该指出,这个文件的最新版本(maven-metadata.xml)一定是错误的。org.codehaus.jackson/jackson-core-asl 的最新版本是 1.9.9。

需要其他版本的 jackson-core-asl(更新 1.1.0)的其他依赖项将中断。正如它在我的场景中所做的那样。我必须手动更改 maven-metadata.xml 文件 ok jackson-core-asl 才能使其工作

于 2012-10-01T14:24:14.907 回答
1

Maven 无法找到 jackson-core-asl 的依赖项,您需要在 POM 中包含以下内容

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.0</version>
</dependency>

如果它已经包含,那么您可能必须指定存储库。检查Maven 存储库

于 2012-09-29T10:36:48.737 回答