解决Maven中的依赖冲突

问题描述

在运行mvn enforcer:enforce时,我得到以下信息

   `Dependency convergence error for commons-lang:commons-lang:2.4 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-com.atlassian.event:atlassian-event:2.2.0
        +-commons-lang:commons-lang:2.4
and

  +-com.zapr.zaprutils:database-connections:1.20
    +-commons-configuration:commons-configuration:1.10
      +-commons-lang:commons-lang:2.6

[WARNING] 
Dependency convergence error for org.apache.httpcomponents:httpcore:4.2.2 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpcore:4.2.2
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpcore-nio:4.2.2
        +-org.apache.httpcomponents:httpcore:4.2.2
and

  +-com.amazonaws:aws-java-sdk-ssm:1.11.833
    +-com.amazonaws:aws-java-sdk-core:1.11.833
      +-org.apache.httpcomponents:httpclient:4.5.5
        +-org.apache.httpcomponents:httpcore:4.4.9

[WARNING] 
Dependency convergence error for com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0-M9 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.jira:jira-rest-java-client-api:3.0.0
      +-com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0-M9
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.jira:jira-rest-java-client-api:3.0.0
      +-com.atlassian.httpclient:atlassian-httpclient-api:0.13.2
        +-com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-com.atlassian.event:atlassian-event:2.2.0
        +-com.atlassian.util.concurrent:atlassian-util-concurrent:0.0.12
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0-M9

[WARNING] 
Dependency convergence error for commons-logging:commons-logging:1.1.1 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpclient-cache:4.2.1-atlassian-2
        +-commons-logging:commons-logging:1.1.1
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpasyncclient:4.0-beta3-atlassian-1
        +-commons-logging:commons-logging:1.1.1
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.springframework:spring-context:4.2.4.RELEASE
        +-org.springframework:spring-core:4.2.4.RELEASE
          +-commons-logging:commons-logging:1.2
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-org.apache.httpcomponents:httpmime:4.1.2
      +-commons-logging:commons-logging:1.1.1
and

  +-com.amazonaws:aws-java-sdk-ssm:1.11.833
    +-com.amazonaws:aws-java-sdk-core:1.11.833
      +-commons-logging:commons-logging:1.1.3
and

  +-com.zapr.zaprutils:database-connections:1.20
    +-commons-configuration:commons-configuration:1.10
      +-commons-logging:commons-logging:1.1.1

[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence Failed with message:
Failed while enforcing releasability the error(s) are [
Dependency convergence error for commons-lang:commons-lang:2.4 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-com.atlassian.event:atlassian-event:2.2.0
        +-commons-lang:commons-lang:2.4
and

  +-com.zapr.zaprutils:database-connections:1.20
    +-commons-configuration:commons-configuration:1.10
      +-commons-lang:commons-lang:2.6,Dependency convergence error for org.apache.httpcomponents:httpcore:4.2.2 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpcore:4.2.2
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpcore-nio:4.2.2
        +-org.apache.httpcomponents:httpcore:4.2.2
and

  +-com.amazonaws:aws-java-sdk-ssm:1.11.833
    +-com.amazonaws:aws-java-sdk-core:1.11.833
      +-org.apache.httpcomponents:httpclient:4.5.5
        +-org.apache.httpcomponents:httpcore:4.4.9,Dependency convergence error for com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0-M9 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.jira:jira-rest-java-client-api:3.0.0
      +-com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0-M9
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.jira:jira-rest-java-client-api:3.0.0
      +-com.atlassian.httpclient:atlassian-httpclient-api:0.13.2
        +-com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-com.atlassian.event:atlassian-event:2.2.0
        +-com.atlassian.util.concurrent:atlassian-util-concurrent:0.0.12
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.util.concurrent:atlassian-util-concurrent:2.4.0-M9,Dependency convergence error for commons-logging:commons-logging:1.1.1 paths to dependency are:

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpclient-cache:4.2.1-atlassian-2
        +-commons-logging:commons-logging:1.1.1
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.apache.httpcomponents:httpasyncclient:4.0-beta3-atlassian-1
        +-commons-logging:commons-logging:1.1.1
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-com.atlassian.httpclient:atlassian-httpclient-apache-httpcomponents:0.13.2
      +-org.springframework:spring-context:4.2.4.RELEASE
        +-org.springframework:spring-core:4.2.4.RELEASE
          +-commons-logging:commons-logging:1.2
and

  +-com.atlassian.jira:jira-rest-java-client-core:3.0.0
    +-org.apache.httpcomponents:httpmime:4.1.2
      +-commons-logging:commons-logging:1.1.1
and

  +-com.amazonaws:aws-java-sdk-ssm:1.11.833
    +-com.amazonaws:aws-java-sdk-core:1.11.833
      +-commons-logging:commons-logging:1.1.3
and

  +-com.zapr.zaprutils:database-connections:1.20
    +-commons-configuration:commons-configuration:1.10
      +-commons-logging:commons-logging:1.1.1
]`

当我从pom.xml中删除以下依赖项时,代码会正常构建。

<dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-rest-java-client-core</artifactId>
            <version>5.2.1</version>
</dependency>

但是当我建立这种依赖性时,会出现以下错误

Caused by: java.lang.NullPointerException
    at com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.setConfiguration(AbstractJAXBProvider.java:105)
    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:498)
    at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1287)
    at org.jvnet.hk2.internal.ClazzCreator.methodMe(ClazzCreator.java:319)
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:372)
    ... 89 more
javax.servlet.servletexception: io.dropwizard.jersey.setup.JerseyServletContainer-1c62c3fd@987f3da==io.dropwizard.jersey.setup.JerseyServletContainer,jsp=null,order=1,inst=false
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:691)
    at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:427)
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:760)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:374)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:848)
    at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:287)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at com.codahale.metrics.jetty9.InstrumentedHandler.doStart(InstrumentedHandler.java:101)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:403)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at org.eclipse.jetty.server.handler.StatisticsHandler.doStart(StatisticsHandler.java:252)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
    at org.eclipse.jetty.server.Server.start(Server.java:419)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at org.eclipse.jetty.server.Server.doStart(Server.java:386)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at io.dropwizard.cli.ServerCommand.run(ServerCommand.java:53)
    at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:44)
    at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
    at io.dropwizard.cli.Cli.run(Cli.java:78)
    at io.dropwizard.Application.run(Application.java:93)
    at com.zapr.api.sdkrules.SDKRulesAPIApplication.main(SDKRulesAPIApplication.java:24)
Caused by: A MultiException has 3 exceptions.  They are:
1. java.lang.NullPointerException
2. java.lang.IllegalStateException: Unable to perform operation: method inject on com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App
3. java.lang.IllegalStateException: Unable to perform operation: create on org.glassfish.jersey.message.internal.MessageBodyFactory
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:392)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)
    at org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:70)
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2022)
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:114)
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:88)
    at org.glassfish.jersey.internal.inject.ProviderToService.apply(ProviderToService.java:58)
    at org.glassfish.jersey.internal.inject.ProviderToService.apply(ProviderToService.java:54)
    at jersey.repackaged.com.google.common.collect.Iterators$8.transform(Iterators.java:799)
    at jersey.repackaged.com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:343)
    at java.util.LinkedHashSet.<init>(LinkedHashSet.java:169)
    at jersey.repackaged.com.google.common.collect.Sets.newLinkedHashSet(Sets.java:325)
    at org.glassfish.jersey.internal.inject.Providers.getClasses(Providers.java:392)
    at org.glassfish.jersey.internal.inject.Providers.getProviders(Providers.java:188)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.<init>(MessageBodyFactory.java:222)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1375)
    at org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:272)
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:366)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)
    at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:83)
    at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:71)
    at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:97)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:154)
    at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:199)
    at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:122)
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2022)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:774)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:737)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:707)
    at org.glassfish.jersey.server.model.ComponentModelValidator.<init>(ComponentModelValidator.java:97)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:549)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369)
    at javax.servlet.GenericServlet.init(GenericServlet.java:244)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:670)
    ... 41 more

我该如何解决?我尝试使用不同版本的jira-rest-java-client-core,但结果是相同的。我已经阅读了有关排除的内容,但不确定如何使用它们来解决我的问题。

解决方法

依赖性收敛错误是通过使用<dependencyManagement>中的条目而不是使用排除项来解决的。

您执行以下操作:

  • 您查看列表中哪些传递性依赖项出现在多个版本中。
  • 您选择所需的版本(通常是最新版本)。
  • 您可以在POM的<dependencyManagement>部分中添加一个条目,在其中指定此版本。
  • 然后,该条目将覆盖不同的传递依赖项。
,

该问题与传递依赖关系有关,您可以通过在dependencyManagement中移动冲突的依赖关系来解决此问题

<dependencyManagement>
 <dependencies>
    <dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-rest-java-client-core</artifactId>
        <version>5.2.1</version>
    <dependency>
  <dependencies>
<dependencyManagement>

然后在“依赖项”部分定义没有任何版本的依赖项

<dependencies>
  <dependency>
    <groupId>com.atlassian.jira</groupId>
    <artifactId>jira-rest-java-client-core</artifactId>
  <dependency>
<dependencies>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...