为什么Spring Boot项目中的某些依赖不需要指定版本?

elv*_*vis 1 java dependencies maven spring-boot

我正在学习 Spring Boot,我发现您不需要为某些依赖项指定版本,但您需要为其他依赖项指定版本。这个依赖的版本从哪里来?

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.dgs</groupId>
    <artifactId>n-tier-and-jackson</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>n-tier-and-jackson</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <paypal.rest.easy.version>2.3.3-RELEASE</paypal.rest.easy.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>

        <dependency>
            <groupId>com.paypal.springboot</groupId>
            <artifactId>resteasy-spring-boot-starter</artifactId>
            <version>${paypal.rest.easy.version}</version>
        </dependency>

...
Run Code Online (Sandbox Code Playgroud)

例如,在此代码中,您不需要指定 spring-boot-starter-jersey 的版本,但需要指定resteasy-spring-boot-starter 的版本。spring-boot-starter-jersey 的版本来自哪里?谢谢你!

Ahm*_*ETI 6

依赖项版本在您在 pom 文件的父部分中指定的 pom 文件中声明

  • @elvis 这是因为 Maven 依赖管理的工作原理。父pom在&lt;dependencyManagement&gt;标签中声明了依赖关系。当你在dependencyManagement中声明依赖时,实际上并不是添加依赖,而是说如果有任何子项目使用了该依赖,那么就使用父pom中声明的版本。简而言之,dependencyManagement 就是确保你的所有子项目一致地使用相同的版本。 (3认同)