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) 在指定范围内没有可用的版本的主要内容,如果未能解决你的问题,请参考以下文章