• dependencyManagement、parent与dependencies


    本文总结自:https://www.cnblogs.com/feibazhf/p/7886617.html

    当我们的项目很多时,为了适应子项目的依赖项使用统一的版本,我们可以创建一个parent项目来管理子项目的公共的依赖。

    parent项目根据dependencyManagement来定义各个依赖项的版本

    例如:

    <dependencyManagement>          
            <dependencies>  
                <dependency>  
                    <groupId>org.eclipse.persistence</groupId>  
                    <artifactId>org.eclipse.persistence.jpa</artifactId>  
                    <version>${org.eclipse.persistence.jpa.version}</version>  
                    <scope>provided</scope>  
                </dependency>  
                  
                <dependency>  
                    <groupId>javax</groupId>  
                    <artifactId>javaee-api</artifactId>  
                    <version>${javaee-api.version}</version>  
                </dependency>  
            </dependencies>  
        </dependencyManagement>

    子项目通过parent继承父项目

    <parent>  
            <artifactId>itoo-base-parent</artifactId>  
            <groupId>com.tgb</groupId>  
            <version>0.0.1-SNAPSHOT</version>  
            <relativePath>../itoo-base-parent/pom.xml</relativePath>  
    </parent>

    接下来子项目的dependency就能不标明版本号,而使用父项目的版本

    <dependencies>  
            <dependency>  
                <groupId>javax</groupId>  
                <artifactId>javaee-api</artifactId>  
            </dependency>  
              
            <dependency>  
                <groupId>com.fasterxml.jackson.core</groupId>  
                <artifactId>jackson-annotations</artifactId>  
            </dependency>  
              
            <dependency>  
                <groupId>org.eclipse.persistence</groupId>  
                <artifactId>org.eclipse.persistence.jpa</artifactId>  
                <scope>provided</scope>  
            </dependency>  
        </dependencies>  

    -------------------------------------------------------------------------------------

    重点:

    如果不写dependencyManagement,即没有用dependencyManagement包裹dependencies对于dependencies内的依赖项,子项目中即使没有明确地写,仍然会从父项目中继承该依赖项(全部继承)。

    而如果加上了,

    dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,(写了版本号相当于覆盖),并且versionscope都读取自父pom。

  • 相关阅读:
    c++的deque和queue和stack
    c++ vector和set的区别
    c++ set的用法
    c++map的用法
    c++总的map和set有什么区别,如何实现的
    1208. Get Equal Substrings Within Budget
    1089. Duplicate Zeros
    1202. Smallest String With Swaps
    1122. Relative Sort Array
    1144. Decrease Elements To Make Array Zigzag
  • 原文地址:https://www.cnblogs.com/yanze/p/10620396.html
Copyright © 2020-2023  润新知