[Maven]Maven 从小白到专家

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Maven]Maven 从小白到专家相关的知识,希望对你有一定的参考价值。

Maven

一、小白入门

1. 自动部署流程图

2. maven 构建过程

MavenApache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具,maven 本身使用 Java 语言进行开发。构建过程包含的主要环节:

  1. 清理:删除上一次构建的结果,为下一次构建做好准备
  2. 编译:Java 源代码编译成 .class 字节码文件
  3. 测试:运行提前准备好的测试程序
  4. 报告:针对刚才的测试结果生成一个全面的报告信息
  5. 打包:java 工程 -> jar 包;web 工程 -> war
  6. 安装:把一个 maven 工程经过打包操作生成的 jar 包或 war 包存入 maven 仓库
  7. 部署:将打包生成的 jar 包或 war 包部署到服务器
    7.1 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
    7.2 部署 war 包:借助相关 maven 插件,如 cargo 将 war 包部署到 tomcat 服务器上运行

3. maven 总体工作机制

4. maven 安装初始化配置

  1. 在 maven 安装目录的 conf/.setting.xml 中配置本地 maven 仓库
<!-- 配置本地 maven 仓库-->
<localRepository>D:/Software/Maven/repository</localRepository>
  1. 配置阿里云镜像仓库,提高下载速度
<mirrors>
    <!-- 配置阿里云镜像仓库 -->
    <mirror>
        <id>nexus-aliyun</id>
        <name>Nexus aliyun</name>
        <mirrorOf>central</mirrorOf>
        <url>https://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>
  1. 配置 maven 仓库使用的 JDK 版本
<!-- 配置 maven 仓库使用的 JDK 版本 -->
<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>
  1. 配置环境变量 MAVEN_HOMEPATH

5. maven 坐标说明

使用由 groupIdartifactIdversion 标签构成的坐标可以唯一确定一个 maven 依赖

  1. groupId:公司或组织的 id(公司或组织域名的倒序,通常也会加上项目名称)
  2. artifactId:一个项目或是项目中的一个模块的 id(模块的名称,将来作为 maven 工程的工程名)
  3. version:版本号(SNAPSHOTRELEASE

6. archetype 命令创建 maven 工程

mvn archetype:generate:mvn 是主命令,后两个命令是子命令,archetype 表示使用的插件,generate 表示使用插件的目的

7. pom.xml 解读

POM(Project Object Model):项目对象模型,将整个工程抽象为一个模型

<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">
    <!-- 从 maven2 开始固定值 4.0.0,代表当前 pom.xml 所采用的标签结构 -->
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bear.maven</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 当前 maven 工程打包的方式,若取值为 pom,则说明这个工程是用来管理其它工程的工程 -->
    <packaging>jar</packaging>

    <name>test</name>
    <url>http://maven.apache.org</url>

    <!-- 自定义属性值 -->
    <properties>
        <!-- 构建过程中读取源码时采用的字符集 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!-- 配置当前依赖的作用范围 -->
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

8. 常用构建命令

运行 maven 中和构建操作相关的命令时,必须进入到 pom.xml 文件所在的目录,否则会报错

  1. 主程序编译:mvn compile -> target/classes
  2. 测试程序编译:mvn test-compile -> target/test-classes
  3. 测试命令:mvn test
  4. 打包命令:mvn package
  5. 安装命令:mvn install,安装的效果是将本地构建过程中生成的 jar 包存入本地 maven 仓库,这个 jar 包在 maven 仓库中的路径是根据它的坐标信息生成的
  6. install 过程中跳过测试:mvn install -Dmaven.test.skip=true

9. 生成 web 工程

生成 web 工程:mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4

10. 查看工程中的依赖

  1. 查看当前工程依赖的 jar 包列表:mvn dependency:list
  2. 以树形方式显示当前工程依赖列表:mvn dependency:tree

11. scope 设置依赖作用范围

scope 指定依赖的作用范围:compile、test、provided、system、runtime、import

scopemain 目录(空间)test 目录(空间)开发过程(时间)部署到服务器(时间)
compile有效有效有效有效
provided有效有效有效无效
test无效有效有效无效

12. 依赖传递性

在 A 依赖 B,B 依赖 C 的前提下(A->B->C),C 是否能够传递到 A,取决于 B 依赖 C 时所使用的依赖范围

  1. 若 B 依赖 C 时使用 compile 范围,则 C 能够传递到 A
  2. 若 B 依赖 C 时使用 testprovided 范围:不能传递,需要这样的 jar 包时,必须在需要的地方明确配置依赖

13. 排除依赖以解决冲突

当 A 依赖 B,B 依赖 C 并且 C 可以传递到 A 时,A 不想依赖 C 以避免产生 jar 包冲突,需要在 A 中把 C 排除掉。配置方式:在具体依赖的 dependecy 标签中使用 exclusions 标签排除具体依赖

<!-- 如工程依赖 springframework core 时需要排除 commons-logging 依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.14</version>
    <!-- 使用 excludes 标签配置依赖的排除	-->
    <exclusions>
        <!-- 在 exclude 标签中配置一个具体的排除 -->
        <exclusion>
            <!-- 指定要排除的依赖的坐标(不需要写 version) -->
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

14. maven 父子工程

  1. maven 工程之间 A 工程继承自 B 工程,本质上就是 A 工程的 pom.xml 中配置继承了 B 工程中的 pom.xml。使用继承工程的好处是:可以在父工程中统一管理项目中的依赖信息,具体来说是管理依赖信息的版本
  2. 只有打包方式为 pom 的 maven 工程才能够管理其它 maven 工程,打包方式为 pom 的 maven 工程中不写具体业务代码,专门用于管理其它 maven 工程
  3. 在父工程中统一管理修改版本信息,以实现父工程一次修改,所有子工程版本依赖信息跟着变化
<!-- 使用 dependencyManagement 标签配置对依赖的管理 -->
<!-- 被管理的依赖并没有真正被引入到子工程,子工程中使用到具体依赖时需要明确配置,不需要写版本号 -->
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
	</dependencies>
</dependencyManagement>

二、普通开发人员(前置知识:SSM)

  1. 功能演示

  2. 架构的概念

  3. 正式创建工程

  4. 如何选择依赖

  5. 组件依赖列表

  6. 建包

  7. 物理建模

  8. 逻辑建模

  9. 数据库连接信息

  10. JdbcUtils 创建数据源对象

  11. JdbcUtils 事务代码分析

  12. JdbcUtils 对象跨方法传递分析

  13. JdbcUtils ThreadLocal 介绍

  14. JdbcUtils 工具方法实现

  15. JdbcUtils 测试

  16. BaseDao 泛型说明

  17. BaseDao 具体方法

  18. BaseDao 测试

  19. 子类 Dao

  20. 事务控制总体思路

  21. 事务过滤器

  22. TransactionFilter 类

  23. 注册 TransactionFilter 类

  24. 事务控制注意事项

  25. 表述层 ViewBaseServlet 服务器端渲染

  26. Thymeleaf 简要工作机制

  27. 逻辑视图的概念

  28. 创建 ViewBaseServlet 类

  29. 配置初始化参数

  30. ModuleBaseServlet

  31. 辅助功能

  32. 显示首页流程图

  33. 显示首页代码实现

  34. 登录流程图

  35. 创建 AuthServlet 类

  36. 创建 EmpService 和登录失败异常

  37. AuthServlet 登录逻辑

  38. 登录完成并测试

  39. 退出登录

  40. 显示奏折列表流程图

  41. 创建组件

  42. 显示奏折列表 java 代码

  43. 登录信息部分

  44. 初步显示信息

  45. 调整颜色

  46. 和登录成功对接

  47. 显示奏折详情流程图

  48. 调整超链接

  49. 显示奏折详情 java 代码

  50. 页面显示

  51. 奏折已读

  52. 调整表单样式

  53. 批复奏折

  54. 登录检查流程图

  55. 登录检查代码实现

  56. 打包部署

  57. 第一只锦囊小结

  58. 建立工程间关系

  59. 各工程配置 POM

  60. 逆向工程

  61. 配置并测试数据源

  62. 整合 Mybatis

  63. 事务控制

  64. 配置 web.xml

  65. 显示首页

  66. 辅助功能

  67. 登录功能

  68. 整理文档

三、资深开发人员(前置知识:微服务)

  1. 第三只锦囊的说明
  2. 各工程总体说明
  3. 创建工程、建立依赖关系
  4. 父工程管理依赖
  5. util 模块
  6. 创建实体类
  7. 对外暴露接口
  8. service 层
  9. controller 层
  10. 主启动类
  11. yml 配置文件
  12. 准备环境
  13. 显示首页
  14. 登录验证流程图
  15. 装配远程接口说明
  16. 装配远程接口分析
  17. 验证方法
  18. 登录验证完成并测试
  19. 部署运行
  20. 修改 mysql 连接信息
  21. 在总体聚合工程上执行 install
  22. 添加 SpringBoot 的打包插件
  23. 执行 SpringBoot 打包插件的打包命令
  24. 微服务启动
  25. Maven 是一款项目管理工具
  26. POM 的四层体系
  27. 属性的声明和引用
  28. build 标签本身详解
  29. build 标签典型引用:JDK 版本
  30. Spring Boot 插件和 MBG 插件
  31. 依赖补充:其它三个依赖范围
  32. 可选依赖
  33. 版本仲裁机制
  34. 自定义插件:创建插件
  35. 使用插件
  36. profile 概述
  37. 配置方式
  38. 激活方式
  39. 实例演示
  40. 资源属性过滤
  41. Nexus 服务器安装和启动
  42. 仓库类型介绍
  43. 通过 Nexus 下载第三方 jar 包
  44. 部署 jar 包及获取别人部署的 jar 包
  45. 配置 Nexus 仓库举例
  46. jar 包冲突概述
  47. jar 包冲突本质
  48. 解决办法概述
  49. 解决办法:IDEA 的 Maven helper 插件
  50. 解决办法:Maven 的 enforcer 插件
  51. 体系外 jar 包导入
  52. 导出课件

以上是关于[Maven]Maven 从小白到专家的主要内容,如果未能解决你的问题,请参考以下文章

Maven从入门到精通,小白也能快速上手

Maven框架从入门到实战!

史上最强maven配置详情

Maven教程

打怪升级之小白的大数据之旅(三十七)<Maven的核心知识>

Maven小白系列-05Maven统一版本管理