java-Maven-如何使用多个版本的依赖项?

我有使用JIRA REST Java客户端的项目.在我尝试将其与Spring Boot集成之前,它一直运行良好.从那以后,我将无法正确地从AsynchronousJiraRestClientFactory调用createWithBasicHttpAuthentication.我得到:

ClassNotFoundException: org.apache.http.util.Args

所以我在pom.xml中添加了HttpComponents Core阻止I / O(httpcore)依赖关系,但后来我得到了

ClassNotFoundException: org.apache.http.nio.NHttpMessageParserFactory

我通过将HttpComponents Core非阻塞I / O(httpcore-nio)添加到pom.xml来解决.我现在有

NoSuchMethodError: org.apache.http.nio.client.HttpAsyncClient.start()V

我已经比较了当项目具有spring boot父项以及被注释掉时的dependency:tree.它向我展示了添加spring boot parent会更改我的依赖项的版本.您可以检查diff here(左侧不带弹簧靴,右侧带弹簧靴)

似乎JIRA REST Java Client需要某些依赖项的较旧版本.
我怎么解决这个问题?

pom.xml

...

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.0.0.RELEASE</version>
</parent>

...

<dependencies>

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

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.3.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore-nio</artifactId>
        <version>4.3</version>
    </dependency>

</dependencies>

...

解决方法:

我可以通过覆盖pom.xml中的这些属性来修复Spring Boot应用程序中的运行时

<properties>
    <httpasyncclient.version>4.0-beta3-atlassian-1</httpasyncclient.version>
    <httpclient.version>4.2.1-atlassian-2</httpclient.version>
</properties>

请注意,如果您决定在项目中使用http-client和/或httpassync客户端(例如,使用RestTemplate),可能还会有其他问题.

Atlassian应该绝对升级依赖项.

上一篇:jira简单介绍


下一篇:java-Tomcat在路径上的Apache代理错误后