zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    【转】ASP.NET页面刷新方法总结
    GridView点击超链接时弹出小窗口
    VS2008增加AJAX Control Toolkit3.5支持(组图)
    水晶报表中"已达到系统管理员配置的最大报表处理作业数限制"错误的处理
    asp.net 在使用Response.Redirect try{}catch{}块失效
    【转】ASP.NET的五大数据控件浅谈
    ASP.NET生成随机密码
    ASP.NET Web应用程序和ASP.NET网站的区别
    使用ArcGIS GP服务之一框架介绍
    mysql索引的类型和优缺点
  • 原文地址:https://www.cnblogs.com/yanze/p/10620396.html
Copyright © 2011-2022 走看看