我有一个依赖项和一些依赖项目。 在依赖项目的 pom 中,我有这个 -
<properties>
<jackson-core.version>2.6.1</jackson-core.version>
<jackson-core-asl.version>1.9.13</jackson-core-asl.version>
<jackson.version>1.9.13</jackson.version>
<jackson-databind.version>2.6.1</jackson-databind.version>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-core.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-core.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>jackson-module-hibernate</artifactId>
<version>${fasterxml.version} </version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>${jackson-core-asl.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
</dependencies>
jackson-databind.version 设置为 2.6.1。构建依赖项目后,当我在其中一个依赖项目上运行 clean install
时,出现以下错误,其中 jackson-databind jar 版本 1.9.13 的版本查找失败 -
[ERROR] Failed to execute goal on project project-app: Could not resolve dependencies for project com.something:project-app:jar:1.0.1-SNAPSHOT: Failed to collect dependencies at org.springframework.boot:spring-boot-starter-web:jar:1.2.5.RELEASE -> com.fasterxml.jackson.core:jackson-databind:jar:1.9.13: Failed to read artifact descriptor for com.fasterxml.jackson.core:jackson-databind:jar:1.9.13: Could not transfer artifact com.fasterxml.jackson.core:jackson-databind:pom:1.9.13 from/to nexus-releases-prepaid (https://project.com/repository/maven-snapshots): Failed to transfer https://project.com/repository/maven-snapshots/com/fasterxml/jackson/core/jackson-databind/1.9.13/jackson-databind-1.9.13.pom. Error code 400, Repository version policy: SNAPSHOT does not allow version: 1.9.13 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project project-app: Could not resolve dependencies for project com.project:project-app:jar:1.0.1-SNAPSHOT: Failed to collect dependencies at org.springframework.boot:spring-boot-starter-web:jar:1.2.5.RELEASE -> com.fasterxml.jackson.core:jackson-databind:jar:1.9.13
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:269)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:147)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:248)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:202)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project com.project:project-app:jar:1.0.1-SNAPSHOT: Failed to collect dependencies at org.springframework.boot:spring-boot-starter-web:jar:1.2.5.RELEASE -> com.fasterxml.jackson.core:jackson-databind:jar:1.9.13
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:178)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:243)
... 23 more
Caused by: org.eclipse.aether.collection.DependencyCollectionException: Failed to collect dependencies at org.springframework.boot:spring-boot-starter-web:jar:1.2.5.RELEASE -> com.fasterxml.jackson.core:jackson-databind:jar:1.9.13
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:284)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:279)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:169)
... 24 more
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for com.fasterxml.jackson.core:jackson-databind:jar:1.9.13
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:255)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:171)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:530)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:515)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:403)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:356)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process(DefaultDependencyCollector.java:344)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.doRecurse(DefaultDependencyCollector.java:498)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:451)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:356)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process(DefaultDependencyCollector.java:344)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:247)
... 26 more
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact com.fasterxml.jackson.core:jackson-databind:pom:1.9.13 from/to nexus-releases-prepaid (https://project.com/repository/maven-snapshots): Failed to transfer https://project.com/repository/maven-snapshots/com/fasterxml/jackson/core/jackson-databind/1.9.13/jackson-databind-1.9.13.pom. Error code 400, Repository version policy: SNAPSHOT does not allow version: 1.9.13
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:423)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:225)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:202)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:240)
... 37 more
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.fasterxml.jackson.core:jackson-databind:pom:1.9.13 from/to nexus-releases-prepaid (https://project.com/repository/maven-snapshots): Failed to transfer https://project.com/repository/maven-snapshots/com/fasterxml/jackson/core/jackson-databind/1.9.13/jackson-databind-1.9.13.pom. Error code 400, Repository version policy: SNAPSHOT does not allow version: 1.9.13
at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:856)
at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:1)
at io.takari.aether.connector.AetherRepositoryConnector$GetTask.flush(AetherRepositoryConnector.java:630)
at io.takari.aether.connector.AetherRepositoryConnector.get(AetherRepositoryConnector.java:309)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:499)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:400)
... 40 more
Caused by: io.takari.aether.connector.TransferException: Failed to transfer https://project.com/repository/maven-snapshots/com/fasterxml/jackson/core/jackson-databind/1.9.13/jackson-databind-1.9.13.pom. Error code 400, Repository version policy: SNAPSHOT does not allow version: 1.9.13
at io.takari.aether.connector.AetherRepositoryConnector.handleResponseCode(AetherRepositoryConnector.java:372)
at io.takari.aether.connector.AetherRepositoryConnector.access$8(AetherRepositoryConnector.java:362)
at io.takari.aether.connector.AetherRepositoryConnector$GetTask.resumableGet(AetherRepositoryConnector.java:574)
at io.takari.aether.connector.AetherRepositoryConnector$GetTask.run(AetherRepositoryConnector.java:452)
at io.takari.aether.connector.AetherRepositoryConnector.get(AetherRepositoryConnector.java:303)
... 42 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
没有使用 - jackson-databind 定义的 1.9.13 版本。为 jackson-databind 定义的版本为 2.6.1,为 jackson-mapper-asl 定义的版本为 1.9.13。它似乎采用为后者定义的版本。我不确定为什么要关联这个版本。
注意 - 尝试下载的存储库在 settings.xml 中定义
更新
在我尝试编译的依赖项目中,我将版本指定为 -
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.1</version>
</dependency>
更新2
根据 @Serg 的评论,我做了以下操作 -
我在依赖项和依赖项目中添加了针对 spring-boot-starter-web 的排除。
我也在这两个项目上重新运行了干净安装。但是,即使添加排除项后,我仍然看到下载 1.9.13 的尝试。
更新3
从 mvn dependency 的输出中提取:依赖项项目树 -
[INFO] +- org.springframework.security.oauth:spring-security-oauth2:jar:2.3.6.RELEASE:compile
[INFO] | \- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile
[INFO] | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.1:compile
上面之后是“BUILD SUCCESS”
依赖项目的输出
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building project-app 1.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://project.com/repository/maven-snapshots/com/fasterxml/jackson/core/jackson-databind/1.9.13/jackson-databind-1.9.13.pom
^MDownloading: https://project.com/repository/maven-snapshots/com/fasterxml/jackson/core/jackson-annotations/1.9.13/jackson-annotations-1.9.13.pom
^MDownloading: https://project.com/repository/maven-snapshots/com/fasterxml/jackson/core/jackson-core/1.9.13/jackson-core-1.9.13.pom
^M[WARNING] The POM for com.project:project-security:jar:1.0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for com.project:project-issuer:jar:1.0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for com.project:project-lend:jar:1.0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for com.project:project-bank:jar:1.0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for com.project:project-subscription:jar:1.0.1-SNAPSHOT is missing, no dependency information available
[WARNING] The POM for com.project:project-social:jar:1.0.1-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.307 s
[INFO] Finished at: 2019-07-26T15:34:00+05:30
[INFO] Final Memory: 20M/316M
最佳答案
如果您有 jackson-databind
,那么您不需要导入 jackson-core
,因为前者已经包含后者。
正如您所见,当您手动导入 jackson-core:2.6 时,
因此会出现版本冲突。jackson-databind:2.6.1
包含 jackson-core:2.9.9
。 1
更一般地说,运行mnv dependency:tree
来查看所有依赖项并查找重复项,特别是具有不同版本的依赖项。
编辑
此外,我可以从堆栈跟踪中看到,您使用旧版本的 spring-boot-starter-web
,其中还包含 jackson-databind
。
如果您想使用比 Spring 提供的更新版本的 jackson-databind
- 进行排除
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
否则,请删除重复项并使用开箱即用的 Spring 解决方案。
但是正如我所看到的,您的 spring 版本相当旧,所以我建议排除 Jackson,如上面的示例所示。
Available Jackson Databind versions from Maven Central
编辑2
为了让这一切顺利进行,我相信这就足够了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>jackson-module-hibernate</artifactId>
<version>1.9.1</version>
</dependency>
我唯一不确定的是jackson-module-hibernate
,因为我没有使用它的实践。
关于java - 在 Maven 全新安装期间查找不同版本的组件(与 pom 中定义的组件不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57216448/