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

时间:2014-10-23 05:40:49

标签: java rest maven jira spring-boot

我有使用JIRA REST Java Client的项目。它工作正常,直到我尝试将其与Spring Boot集成。因为我无法在没有错误的情况下从createWithBasicHttpAuthentication调用AsynchronousJiraRestClientFactory。我明白了:

ClassNotFoundException: org.apache.http.util.Args

所以我将HttpComponents Core blocking I/O(httpcore)依赖项添加到我的pom.xml,但之后我得到了

ClassNotFoundException: org.apache.http.nio.NHttpMessageParserFactory

我将HttpComponents Core non-blocking I/O(httpcore-nio)添加到pom.xml后解决了这个问题。现在我有了

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

我已经比较了dependency:tree当项目有春季启动父项时以及它被注释掉的时候。它告诉我,添加spring boot parent会更改我的依赖项的版本。您可以检查差异 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>

...

1 个答案:

答案 0 :(得分:3)

我能够通过覆盖我的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肯定会升级依赖项。