Bootstrap

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

仓库:

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

声明周期:

  1. 三套互相独立的声明周期:
    1. Clean:清理项目
    2. Default:构建项目
    3. sit:建立项目站点

      生命周期

      clean

      default

      site

      阶段(phase),执行顺序由上至下

      pre-clean

      validate

      pre-site

      clean

      initialize

      site

      post-clean

      generate-sources

      post-site

       

      process-sources

      site-deploy

      generate-resources

       

      process-resources

      compile

      process-classes

      generate-test-sources

      process-test-sources

      generate-test-resources

      process-test-resources

      test-compile

      process-test-classes

      test

      prepare-package

      package

      pre-integration-test

      integration-test

      post-integration-test

      verify

      install

      deploy

Maven 继承和聚合:

  1. 意义:
    1. 避免重复,让项目更加安全
  2. 可继承的 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. 私服介绍:
    1. 正式开发,不同的项目组开发不同的工程。maven-dao 工程开发完毕,发布到私服 maven-service 从私服下载 dao
    2. 公司在自己的局域网内部搭建自己的远程仓库服务器,成为私服。
    3. 私服服务器既是公司内部的 maven 远程仓库,每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 包并发送到私服服务器,其他项目组从私服服务器下载所有依赖的构建(jar)
  2. 私服充当代理服务器,当私服上没有 jar 包会从互联中央仓库自动下载
  3. Nexus介绍:
    1. Nexus 是 Maven 仓库管理器,通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库管理功能,构建搜索功能等。
;