Maven使用技巧-parent依赖基础

放肆的年华 提交于 2019-12-10 05:33:03

前言

使用parent控制版本依赖是很常见的事情。类似于java中的父子类继承关系,子类可以引用父类中非private的变量和方法,Maven中的parent定义是类似的,继承者可以直接使用parent中的maven depandencies。

在做多项目依赖情况是,我们常常会创建一个项目提供基础依赖。创建一个parent项目,打包类型为pom,parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要定义<parent></parent>,parent标签中写上parent项目的pom坐标就可以引用到common.jar了。

如果AB中分别定义对springmvc.jar的依赖,当springmvc.jar版本变化时修改起来又会很麻烦。解决办法是在parent项目的pom文件中使用<dependencyManagement></dependencyManagement>将springmvc.jar管理起来,如果有哪个子项目要用,那么子项目在自己的pom文件中使用。

基础依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.13.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.sankuai.meituan.waimai</groupId>
    <artifactId>waimai-dependencies</artifactId>
    <version>1.3.9.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <springframework.version>4.3.12.RELEASE</springframework.version>
        <springboot.version>1.5.8.RELEASE</springboot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- 统一管理Spring依赖 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <version>${springframework.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--通过Spring Boot管理其他第三方版本-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springboot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--其他-->
        </dependencies>
    </dependencyManagement>
</project>

基础依赖中包含了spring依赖和springboot依赖。

依赖放在dependencyManagement中,并且指定 <type>pom</type> 和 <scope>import</scope>,import 是 <scope> 中最特别的一个类型,这个类型只能用于这种情况。

依赖中的顺序,越靠前面优先级越高。

import只在dependencyManagement元素下才有效果,作用是将目标POM中的dependencyManagement配置导入并合并到当前POM的dependencyManagement元素中。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!