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 还提供强大的仓库管理功能,构建搜索功能等。
相关推荐
迟來北风31 分钟前
idea找不到或无法加载主类怎么解决
java·spring boot·intellij-idea
qq_3384323732 分钟前
IntelliJ IDEA远程开发代理远程服务器端口(免费内网穿透)
java·ide·intellij-idea·远程开发
南宫生2 小时前
力扣动态规划-19【算法学习day.113】
java·学习·算法·leetcode·动态规划
优人ovo2 小时前
基于JMX实现消息队列监控
java·kafka
fly spider2 小时前
每日 Java 面试题分享【第 20 天】
java·开发语言·面试·io
zhyhgx2 小时前
Maven
java·开发语言·maven
枫叶落雨2222 小时前
15JavaWeb——Maven高级篇
linux·python·maven
纪元A梦2 小时前
Java设计模式:行为型模式→状态模式
java·设计模式·状态模式