解决maven中的依赖冲突

Resolving dependency conflicts in 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.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.compute(SingletonContext.java:83)
    at org.jvnet.hk2.internal.SingletonContext.compute(SingletonContext.java:71)
    at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.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.access0(ApplicationHandler.java:184)
    at org.glassfish.jersey.server.ApplicationHandler.call(ApplicationHandler.java:350)
    at org.glassfish.jersey.server.ApplicationHandler.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部分定义依赖,不用任何版本

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