为什么我不能在spring-boot中使用apache httpcomponents对象,即使它列在MVN依赖项中?

Ale*_*ruk 5 java apache spring maven

Spring-boot在org.apache.httpcomponents周围有以下maven依赖项

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpasyncclient</artifactId>
    <version>${httpasyncclient.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>${httpclient.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>${httpclient.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但是,除非我自己添加额外的依赖,否则我无法访问代码库中相关的任何org.apache.http.

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

为什么是这样?这与两次添加依赖项不一样吗?

jst*_*jst 6

工件在spring-boot-dependencies pom的dependencyManagement部分中声明.

从spring boot starter继承时的含义,您可以声明要使用由它管理的任何依赖项.请注意,您不需要提供httpclient的版本.这是因为Spring已经很好地管理了它,因此依赖管理.因此,将它声明两次并不是一回事.

更多信息,请访问 http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-maven-parent-pom