zoukankan      html  css  js  c++  java
  • 第5章 maven继承特性

    第5章 maven继承特性

    本章尽量用通俗的语言来介绍maven的继承特性。

    5.1 什么是继承特性

    在代码中,child类继承了parent类,那么child具有父类的所有属性。
    在maven中也类似,父项目pom文件中定义的属性、依赖等配置都可以让子项目pom继承。

    5.2 如何使用

    假设我们在开发一个CRM项目,首先定义几个maven实际项目,crm-dao,crm-service,crm-web,这几个项目是同级的,crm-web依赖crm-service,crm-service依赖service-dao,依赖关系如图:

    Alt text

    这时,创建一个crm-parent项目,在项目中配置所有需要使用的依赖和属性,其他项目继承这个项目,则会自动引入,关系如图:

    Alt text

    Alt text


    crm-parent的pom配置:

    <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>
    
      <groupId>com.crm</groupId>
      <artifactId>crm-parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
    
      <name>crm-parent</name>
      <url>http://maven.apache.org</url>
    
      <properties>
            <!-- 定义基本版本属性 -->
            <spring.version>3.1.0.RELEASE</spring.version>
            <hibernate.version>3.5.6-Final</hibernate.version>
            <jdk.version>1.7</jdk.version> 
            <junit.version>3.8.1</junit.version>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
        <dependencyManagement>
              <dependencies>
                <!-- 测试依赖 -->
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>${junit.version}</version>
                    <scope>test</scope>
                </dependency>
    
                <!-- spring 依赖 -->
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                    <version>${spring.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-webmvc</artifactId>
                    <version>${spring.version}</version>
                </dependency>
    
                <!-- hibernate 依赖 -->
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                    <version>${hibernate.version}</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    
    </project>
    
    

    重点:
    - parent项目的<packaging>pom</packaging>方式是pom,这个项目可以没有任何代码,只需要pom.xml即可。
    - <properties>中定义了所有项目模块用到的版本及常量,统一在parent中管理,这样可以避免多模块版本和常量混乱。
    - <dependencyManagement>中定义了所有需要的依赖关系(假设使用hibernate、springmvc框架)。


    子模块配置:

    crm-dao 是数据操作模块,所有需要引入hibernate对应的依赖的配置。

    <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>
    
        <artifactId>crm-dao</artifactId>
        <packaging>jar</packaging>
    
        <name>crm-dao</name>
        <url>http://maven.apache.org</url>
    
        <parent>
            <groupId>com.crm</groupId>
            <artifactId>crm-parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <relativePath>../crm-parent/pom.xml</relativePath>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
            </dependency>
    
        </dependencies>
    </project>
    

    基于上述配置,我们发现crm-dao已经自动引入了hibernate包,而且版本是我们在parent中定义的版本。

    说明:
    - <parent>标签中,定义了父项目的坐标及相对路径。
    - <dependency>中无需在定义依赖的版本,他已经在父类中统一管理。

    crm-service、crm-web也类似,所以不多讲了。


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Angular学习笔记—创建一个angular项目
    Angular学习笔记—路由(转载)
    Angular学习笔记—HttpClient (转载)
    Angular学习笔记—Rxjs、Promise的区别
    Dubbo-admin管理平台的安装
    正则表达式
    Java NIO系列教程(五) 通道之间的数据传输
    Java NIO系列教程(三) Buffer
    Java NIO系列教程(二) Channel
    Java NIO系列教程(一) Java NIO 概述
  • 原文地址:https://www.cnblogs.com/jdbc/p/4975490.html
Copyright © 2011-2022 走看看