Maven全解析:Maven 进阶

pom.xml 文件:

  1. 定义了项目的基本信息,用于描述项目如何构建,声明项目依赖

坐标:

  1. 构建的唯一标识
  2. 含义:
    1. groupId:组织标识。一般为:公司网址的反写 + 项目名
    2. artifactId:项目名称。一般为:项目名 - 模块
    3. version:版本号 形式为:0.0.1-SNAPSHOT
      1. 第一个 0 标识大版本号,第二 0 标识分支版本号,第三个 0 表示小版本号
        1. SNAPSHOT:快照版本
        2. ALPHA:内测版本
        3. BETA:公测版本
        4. RELEASE:稳定版本
        5. GA:正式发布版本
    4. packaging:打包的方式
      1. pom:只做依赖管理
      2. jar:Maven Java 项目,普通 Java 项目
      3. maven-plugin
      4. ejb
      5. war:JavaWeb 项目
    5. clissfier:用来帮助定义构建输出的一些负数构建

依赖:

  1. dependency:表示一个具体的依赖,可以是本地项目,也可以是第三方依赖
属性说明:
  1. 三维坐标:引用依赖包的三维坐标,用来定义依赖包
  2. scope:控制该依赖包在什么情况下会被加载到 classpath 中
依赖范围:<scope></scope>
  1. 主代码:main 下面的都是主代码在编译的时候的依赖
  2. 测试代码:test 下是测试代码编译的时候的依赖
  3. 运行时:main 代码在运行的时候对包的依赖
scope:默认为 compile
  1. compile:编译依赖范围
  2. provided:对于编译与测试
  3. runtime:运行时
  4. test:测试依赖范围
  5. system
  6. import
依赖传递和可选依赖
  1. 传递依赖是会受到依赖范围的影响
  2. 阻断依赖:
  3. 可选依赖:
    1. 在依赖中明确的排除掉某一依赖,可以使用 exclusion 属性,排除掉引用的依赖

仓库:

类型:
  1. 本地
  2. 中央
  3. 远程:
    1. 阿里云
    2. 腾讯云
    3. 百度云
    4. maven 的中央仓库
本地仓库:
  1. 在第一次执行 maven 命令的时候才会被创建
  2. Maven 所需要的任何构建都是直接从本地仓库获取的。如果本地仓库没有,首先会从远程库下载构建至本地仓库,再使用本地仓库
中央仓库:
  1. 有 Maven 社区提供的仓库
  2. 简单的 Java 项目依赖的构建都可以在这里下载到
  3. 关键概念:
    1. 由 Maven 社区管理
    2. 不需要配置
    3. 需要通过网络才能访问
依赖搜索顺序:

声明周期:

三套互相独立的声明周期:
  1. Clean:清理项目

  2. Default:构建项目

  3. sit:建立项目站点

    |--------------------|------------|-------------------------|-------------|
    | 生命周期 | clean | default | site |
    | 阶段(phase),执行顺序由上至下 | pre-clean | validate | pre-site |
    | 阶段(phase),执行顺序由上至下 | clean | initialize | site |
    | 阶段(phase),执行顺序由上至下 | post-clean | generate-sources | post-site |
    | 阶段(phase),执行顺序由上至下 |   | process-sources | site-deploy |
    | 阶段(phase),执行顺序由上至下 |   | generate-resources |   |
    | 阶段(phase),执行顺序由上至下 |   | process-resources |   |
    | 阶段(phase),执行顺序由上至下 |   | compile |   |
    | 阶段(phase),执行顺序由上至下 |   | process-classes |   |
    | 阶段(phase),执行顺序由上至下 |   | generate-test-sources |   |
    | 阶段(phase),执行顺序由上至下 |   | process-test-sources |   |
    | 阶段(phase),执行顺序由上至下 |   | generate-test-resources |   |
    | 阶段(phase),执行顺序由上至下 |   | process-test-resources |   |
    | 阶段(phase),执行顺序由上至下 |   | test-compile |   |
    | 阶段(phase),执行顺序由上至下 |   | process-test-classes |   |
    | 阶段(phase),执行顺序由上至下 |   | test |   |
    | 阶段(phase),执行顺序由上至下 |   | prepare-package |   |
    | 阶段(phase),执行顺序由上至下 |   | package |   |
    | 阶段(phase),执行顺序由上至下 |   | pre-integration-test |   |
    | 阶段(phase),执行顺序由上至下 |   | integration-test |   |
    | 阶段(phase),执行顺序由上至下 |   | post-integration-test |   |
    | 阶段(phase),执行顺序由上至下 |   | verify |   |
    | 阶段(phase),执行顺序由上至下 |   | install |   |
    | 阶段(phase),执行顺序由上至下 |   | deploy |   |

Maven 继承和聚合:

意义:
  1. 避免重复,让项目更加安全
可继承的 POM 元素:
  1. groupId:项目组ID,项目坐标的核心元素
  2. version:项目版本,项目坐标的核心元素
  3. description:项目的描述信息
  4. organization:项目的组织信息
  5. inceptionYear:项目的创始年份
  6. url:项目的 url 地址
  7. develoers:项目的开发者信息
  8. contributors:项目的贡献者信息
  9. distributionManagement:项目的部署信息
  10. issueManagement:缺陷跟踪系统信息
  11. ciManagement:项目的持续集成信息
  12. scm:项目的版本控制信息
  13. mailingListerv:项目的邮件列表信息
  14. properties:自定义的 Maven 属性
  15. dependency:项目的依赖配置
  16. dependency Management:项目依赖管理配置
  17. repositories:项目的仓库配置
  18. build:包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等
  19. reporting:包括项目的报告输出目录配置、插件配置、插件管理配置

Maven私服架构:

私服介绍:
  1. 正式开发,不同的项目组开发不同的工程。maven-dao 工程开发完毕,发布到私服 maven-service 从私服下载 dao
  2. 公司在自己的局域网内部搭建自己的远程仓库服务器,成为私服。
  3. 私服服务器既是公司内部的 maven 远程仓库,每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 包并发送到私服服务器,其他项目组从私服服务器下载所有依赖的构建(jar)
私服充当代理服务器,当私服上没有 jar 包会从互联中央仓库自动下载
Nexus介绍:
  1. Nexus 是 Maven 仓库管理器,通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库管理功能,构建搜索功能等。
相关推荐
WeiLai11121 小时前
面试基础--Redis 缓存穿透、缓存击穿、缓存雪崩深度解析
java·redis·分布式·后端·缓存·面试·架构
zctel1 小时前
java中小型公司面试预习资料(二):Redis
java·redis·面试
爱吃烤鸡翅的酸菜鱼2 小时前
Java【网络原理】(3)网络编程续
java·运维·服务器·网络
╰つ゛木槿6 小时前
Spring Boot 调用DeepSeek API的详细教程
java·spring boot·后端·deepseek
hhw1991127 小时前
c#面试题整理6
java·开发语言·c#
程序视点7 小时前
SpringBoot配置入门
java·spring boot·spring
Benaso8 小时前
Java,Golang,Rust 泛型的大体对比小记
java·golang·rust
程序员清风8 小时前
什么时候会考虑用联合索引?如果只有一个条件查就没有建联合索引的必要了么?
java·后端·面试
Seven978 小时前
【设计模式】掌握建造者模式:如何优雅地解决复杂对象创建难题?
java·后端·设计模式
自在如风。9 小时前
MyBatis-Plus 使用技巧
java·mybatis·mybatis-plus