Maven入门到掌握(一套打通任督二脉)

2023-11-22 10:20

本文主要是介绍Maven入门到掌握(一套打通任督二脉),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1:分模块开发

  • 意义:

  • 步骤

    • 创建新模块

    • 在各个模块中导入所需要的那个模块的依赖,例

      a<!--    依赖pojo模块--><dependency><groupId>com.ysj</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version></dependency>
      
    • 将要导入的模块安装(install)到本地仓库,否则编译都过不了

在这里插入图片描述

2:依赖管理

  • 依赖传递

    • 依赖具有传递性
      • 直接依赖
      • 间接依赖
    • 依赖注入冲突问题
      • 当同一个坐标配置了多个版本的依赖,后面会覆盖前面的
        在这里插入图片描述
  • 可选依赖(不透明性):隐藏当前工程所依赖的资源,隐藏后对应的资源不具有传递性

        <dependency><groupId>com.ysj</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version>
    <!--        隐藏依赖配置--><optional>true</optional>
    
  • 排除依赖(不需要):隐藏当前以来对应的资源关系,无需指定版本

    <!--      依赖dao模块--><dependency><groupId>com.ysj </groupId><artifactId>maven_04_dao</artifactId><version>1.0-SNAPSHOT</version><exclusions>
    <!--              隐藏当前以来对应的资源关系,无需指定版本--><exclusion><groupId>mysql</groupId><artifactId>mysql:mysql-connector-java</artifactId></exclusion></exclusions></dependency>
    

3:继承与聚合

3.1:聚合

  • 定义:将多个模块组织成一个整体,同时进行项目构建

  • 目的:为了让统一管理各个模块,当其中有模块更新时,让多个模块同时更新

  • 聚合工程

    • 新建一个模块,该模块只需一个pom.xml文件

      • 其打包方式为pom

        <groupId>com.ysj</groupId>
        <artifactId>maven_01_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>pom</packaging>
        
    • pom.xml中进行模块管理

      <modules><module>../maven_03_pojo</module><module>../maven_04_dao</module><module>../../../../springmvc_08_ssm</module>
      </modules>
      
    • 无需管上边儿module的书写顺序,实际聚合中,程序会根据依赖关系逐步构建

3.2:继承

  • 类似java

  • 聚合与继承一般在一个模块中

  • 作用

    • 简化配置
    • 减少版本冲突
  • <!--    配置当前工程继承自parent工程--><parent><groupId>com.ysj</groupId><version>1.0-SNAPSHOT</version><artifactId>maven_01_parent</artifactId><!--填写父工程的pom文件--><relativePath>../maven_01_parent/pom.xml</relativePath></parent>
    
  • 在父模块中定义依赖管理

    • <!--定义依赖管理--><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies></dependencyManagement>
      
    • 此时子模块中可自行选择是否使用该依赖,若使用,则不用指定版本号,默认使用父模块的版本

3.3:继承和聚合的区别

在这里插入图片描述

4:属性

4.1:属性

  • 定义属性
<!--定义属性:变量名为spring.version,版本号为5.2.10.RELEASE-->
<properties>
<spring.version>5.2.10.RELEASE</spring.version>
</properties>
  • 使用属性(使用${})

    <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency>
    </dependencies>
    

4.2:配置文件加载属性

        <build><resources><resource>
<!--${project.basedir}表示当前项目目录,因为子项目继承了parent,所以子项目也有该功能--><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering></resource></resources></build>
  • 打包时要配置maven打war包,此时要忽略web.xml的检查

    • 在web项目下新建个空web.xml文件

    • 在web项目下的pom.xml中定义插件

      </plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-plugin-plugin</artifactId><version>3.6.4</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin>
      

4.3:版本管理

在这里插入图片描述

6:多环境开发

6.1:配置多环境

  • 通过id进行区分
<!--    配置多环境--><profiles>
<!--        开发环境--><profile><id>env_dep</id><properties><jdbc.url>jdbc:mysql://127.0.0.1:3306/mybatis</jdbc.url></properties><!--设置默认开发环境--><activation><activeByDefault>true</activeByDefault></activation></profile>
<!--            生产环境--><profile><id>env_pro</id><properties><jdbc.url>jdbc:mysql://127.1.1.1:3306/mybatis</jdbc.url></properties></profile><!--            测试环境--><profile><id>env_test</id><properties><jdbc.url>jdbc:mysql://127.2.2.2:3306/mybatis</jdbc.url></properties></profile></profiles>

6.2:设置默认开发环境

  • 打包时用命令

    mvn -install -P 环境名
    

7:跳过测试

  • 当上线前有些功能还未开发完全,跳过测试可直接打包

  • 方法

    • 点这个闪电:但是这个的弊端是所有模块均跳过测试

    在这里插入图片描述

    • 配置插件跳过

    • <!--测试插件--><plugins><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.2</version><configuration><!--跳过测试选项--><skipTests>false</skipTests><!--排除掉不参与测试的内容--><excludes><exclude>**/BookServiceTest.java</exclude></excludes></configuration></plugin></plugins>
      
    • 指令跳过

      mvn package -D skipTest
      
           <excludes><exclude>**/BookServiceTest.java</exclude></excludes></configuration></plugin></plugins>
```
  • 指令跳过

    mvn package -D skipTest
    

    关于私服的学习,后续会更新。

创作不易,六个三连+关注吧

这篇关于Maven入门到掌握(一套打通任督二脉)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409459

相关文章

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

IDEA中Maven Dependencies出现红色波浪线的原因及解决方法

《IDEA中MavenDependencies出现红色波浪线的原因及解决方法》在使用IntelliJIDEA开发Java项目时,尤其是基于Maven的项目,您可能会遇到MavenDependenci... 目录一、问题概述二、解决步骤2.1 检查 Maven 配置2.2 更新 Maven 项目2.3 清理本

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

maven中的maven-antrun-plugin插件示例详解

《maven中的maven-antrun-plugin插件示例详解》maven-antrun-plugin是Maven生态中一个强大的工具,尤其适合需要复用Ant脚本或实现复杂构建逻辑的场景... 目录1. 核心功能2. 典型使用场景3. 配置示例4. 关键配置项5. 优缺点分析6. 最佳实践7. 常见问题

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口