java - 在 Maven 全新安装期间查找不同版本的组件(与 pom 中定义的组件不同)

标签 java maven dependencies

我有一个依赖项和一些依赖项目。 在依赖项目的 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 Databind

正如您所见,当您手动导入 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/

相关文章:

java - 模式和匹配器java问题

java - 将 BlackBerry 应用程序与 Flurry 集成

mysql - FlywaySqlException : Unable to insert row for version `11` in Schema History table `schema_version` : Field `version_rank` doesn't have a default value 错误

pandas - 在同一台机器上安装 Tensorflow、NumPy 和 Pandas

c++ - 如何处理必须按特定顺序调用的公共(public)函数的依赖项?

c# - 如何在 Windows 7 上删除 Java 程序的标题栏和任务栏图标?

java - 我们可以从java中的子类调用Parent的main()方法吗?

java - 如何使用 Gradle 推送到 Github 包注册表

maven - 防止 Flyway Maven 插件下载旧的 slf4j jar

dependencies - GNU make将以什么顺序进行先决条件?