Maven 构建错误 org.codehaus.jackson:jackson-core-asl:jar:[1.8,1.9) 在指定范围内没有可用的版本

Posted

技术标签:

【中文标题】Maven 构建错误 org.codehaus.jackson:jackson-core-asl:jar:[1.8,1.9) 在指定范围内没有可用的版本【英文标题】:Maven build error No versions available for org.codehaus.jackson:jackson-core-asl:jar:[1.8,1.9) within specified range 【发布时间】:2012-09-21 01:03:19 【问题描述】:

从今天早上开始,我在构建 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]

【问题讨论】:

【参考方案1】:

Jackson 的 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 文件。

【讨论】:

我已经打开JACKSON-871 来跟踪问题。 FWIW,我发现 Maven 版本范围有太多问题,现在我总是指定确切的补丁版本。这很不幸——因为在许多情况下“最新补丁”可以正常工作——但是 maven 发布插件和其他组件并没有让这个对我有用。 问题是由于我的亚马逊 pom 文件中的版本范围。当我将我的 amazon sdk 更改为最新版本时,它现在可以正常工作了。 只是为了让大家知道,JACKSON-871 已经修复【参考方案2】:

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

【讨论】:

这里一样,将版本更改为1.3.20,构建恢复正常 是的,当我将其更改为最新版本时。问题消失了。 如何更改 AWS 的版本...??【参考方案3】:

我应该指出,这个文件(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 以使其工作

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

安舒您好,感谢您的及时回复。才发现问题。问题在于特定范围。它被提到为 1.8-1.9 如果我将其更改为 1.9。它工作正常。再次感谢。 好吧,这并不能解释太多。为什么版本范围不起作用?同样的问题显然是由我们的依赖项之一引起的。在我们的 pom 中指定特定版本似乎没有帮助 如果这个依赖是传递的并且是从另一个依赖带到你的项目的,这将无济于事。尝试找出导致此问题的 dep 并更新其版本。也许会有所帮助。就我而言,它是 Amazon SDK (1.3.11) 的过期版本

以上是关于Maven 构建错误 org.codehaus.jackson:jackson-core-asl:jar:[1.8,1.9) 在指定范围内没有可用的版本的主要内容,如果未能解决你的问题,请参考以下文章

Maven构建期望错误版本的jar [关闭]

Spring项目上的Maven构建错误

Maven构建时出现访问限制错误

如何解决有关 Maven 的构建错误?

正确设置工具链后 Maven 构建错误

由于 pom.xml 中的错误,无法使用 Maven 运行构建