Maven高级


前面学习中,我们已经学习过 Maven 的入门知识,现在我们学习一些 Maven 的进阶知识。

下面是 Maven 进阶学习的目录:

在这里插入图片描述
在这里插入图片描述

🚀 一、 分模块开发与设计

分模块开发的意义:

  • 将原始模块按功能拆分成若干个子模块,方便模块之间的相互调用,接口共享。

在这里插入图片描述

  1. 创建对应 Maven 模块。
    在这里插入图片描述

  2. 书写模块代码。

    分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,再进行拆分。

  3. 通过 maven 指令安装模块到本地 maven 仓库。(install 指令)

    团队内部开发需要发布模块功能到团队内部可共享的仓库中。

  4. 在需要用到对应模块的工程的 pom 文件中添加该模块的依赖。

🚀 二、 依赖管理

🌟 2.1 什么是依赖?

依赖指当前项目运行所需要的 jar 包,一个项目可以设置多个依赖。

<!-- 格式: -->
<dependency>
  <!-- 依赖所属群组 id -->
  <groupId>org.springframework</groupId>
  <!-- 依赖所属项目 id -->
  <artifactId>spring-webmvc</artifactId>
  <!-- 依赖版本号 -->
  <version>5.2.10.RELEASE</version>
</dependency>

一个项目运行需要多个依赖:
在这里插入图片描述

🌟 2.2 依赖传递

依赖具有传递性:

  1. 直接依赖:在当前项目中通过依赖配置建立的依赖关系。
  2. 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源。

2.1.1 依赖冲突现象

在这里插入图片描述

🌟 2.3 可选依赖 和 排除依赖

2.3.1 可选依赖

可选依赖指对外隐藏当前所依赖的资源——不透明

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.2.10.RELEASE</version>
  <!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源不具有依赖传递性。-->
  <optional>true<optional>
</dependency>

2.3.2 排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本。

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.6</version>
  
  <!-- 排除依赖 -->
  <exclusions>
    <exclusion>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
    </exclusion>
  </exclusions>
  
</dependency>

🚀 三、 继承与聚合

🌟 3.1 聚合

  • 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合。
  • 聚合工程:通常是一个不具有业务功能的 “空” 工程,
  • 作用:使用聚合工程可以将多个工程进行编组,通过对聚合工程进行构建,实现对所包含模块进行同步构建。
    • 当工程中某个模块发生更新时,必须保障工程中与已更新模块关联的模块同步更新,此时使用聚合工程解决批量工程同步构建的问题。

在这里插入图片描述

3.1.1 聚合工程步骤

  1. 创建 Mavne 模块,设置打包类型为 pom 。
    <!--  设置打包方式为 pom  -->
    <packaging>pom</packaging>
    
  2. 设置当前聚合工程所包含的子模块名称。
    <modules>
    	<module>../maven_02_ssm</module>
    	<module>../maven_03_pojo</module>
    	<module>../maben_04_dao</module>
    </modules>
    
    在这里插入图片描述

🌟 3.2 继承

提到继承大家都不陌生,java 中已经学习过继承,在 Maven 中同样也存在着继承机制。

继承描述的是两个工程之间的关系,与 Java 中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。

  • 简化配置。
  • 减少版本冲突。
  1. 在聚合的基础上进行继承操作。

  2. 父工程的 pom 文件中配置依赖关系(子工程中将沿用夫工程的依赖关系)

  3. 配置子工程中可选的依赖关系。

    <!--    定义依赖管理-->
    <dependencyManagement>
    	<dependencies>
        	<dependency>
            	<groupId>com.alibaba</groupId>
            	<artifactId>druid</artifactId>
            	<version>1.1.16</version>
        	</dependency>
    	</dependencies>
    </dependencyManagement>
    

    该操作选中的依赖不要求子工程继承,子工程有需要可以在自己的配置文件中加上。(不需要配置依赖版本,自动使用父工程中的版本)

  4. 在子工程中配置当前工程继承的父工程。

    <!-- 配置当前工程继承自 parent 工程 -->
    <parent>
    	<groupId>com.it</groupId>
    	<artifactId>maven_01_parent</artifactId>
    	<version>1.0-SNAPSHOT</version>
    	<!--填写父工程的 pom 文件-->
    	<relativePath>../maven_01_parent/pom.xml</relativePath>
    </parent>
    

🌟 3.3 继承 和 聚合的区别

在这里插入图片描述

🚀 四、 属性

🌟 4.1 属性配置与使用

  1. 定义属性。
    <properties>
    	<spring.version>5.2.10.RELEASE</spring.version>
    	<junit.version>4.12</junit.version>
    </properties>
    
  2. 引用属性。
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-webmvc</artifactId>
    	<version>${spring.version}</version>
    </dependency>
    

🌟 4.2 版本管理

在这里插入图片描述

🚀 五、 多环境配置与应用

🌟 5.1 多环境开发

maven 提供配置多种环境的设定,帮助开发者使用过程中快速切换环境。
在这里插入图片描述

  1. 定义多环境。
    <profiles>
    <!--  开发环境  -->
    <profile>
    	 <!--  定义环境对应的唯一名称  -->
        <id>env_dep</id>
        <properties>
         	<!--  定义环境中专用的属性值  -->
            <jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>
        </properties>
         <!--  设置是否默认启动  -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!--  生产环境  -->
    <profile>
        <id>env_pro</id>
        <properties>
            <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
        </properties>
    </profile>
    <!--  测试环境  -->
    <profile>
        <id>env_test</id>
        <properties>
            <jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
        </properties>
    </profile>
    </profiles>
    
  2. 使用多环境(构建过程)
    mvn 指令 -p 环境定义id
    
    mvn install -p pro_env
    

🌟 5.2 跳过测试

  1. maven 指令跳过测试。
    mvn install -D skipTests
    
  2. pom 文件细粒度跳过测试。
    <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.4</version>
        <configuration>
            <!-- 设置跳过测试 -->
            <skipTests>true</skipTests>
            <excludes>
                <!-- 排除指定的测试用例-->
                <exclude>**/BookServiceTest.java</exclude>
            </excludes>
        </configuration>
    </plugin>
    </plugins>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值