Maven基本概念与核心配置

    科技2022-07-14  147

    maven安装与核心概念

    安装

    http://maven.apache.org/download/org

    依赖管理

    默认远程仓库:

    默认远程仓库 maven central配置在

    maven-model-builder-3.2.1.jar\org\apache\maven\model\pom-4.0.0.xml

    本地仓库位置:

    本地仓库位置默认在: ~/.m2/respository下

    要修改${M2_HOME}/conf/settings.xml来指定仓库目录

    G:.m2\repository

    maven核心功能总结:

    maven核心作用是编译, 测试, 打包 根目录下的pom.xml文件设置分组ID和artifactId maven基于约定的方式从项目中获取源码与资源文件进行编译打包 对于项目所依赖的组件与本地仓库引用, 如果本地仓库不存在则会从中央仓库下载

    核心配置

    项目依赖

    项目依赖是指maven通过依赖传播, 依赖优先原则, 可选依赖, 排除依赖, 依赖范围等特性来管理项目classpath

    依赖传播特性 我们的项目通常需要依赖第三方组件, 而第三方组件又会依赖其他组件, 遇到这种情况Maven会将依赖网络中的所有节点都加入classpath中, 这就是Maven的依赖传播特性

    项目直接依赖了spring-webmvc叫直接依赖, 对commons-logging依赖是通过webmvc传递的所以叫间接依赖

    依赖优先原则 基于依赖传播特性, 导致整个依赖网络会很复杂, 难免会出现相同组件不同版本的问题. Maven此时会基于依赖优先原则选择其中一个版本。

    第一原则: 最短路径原则

    第二原则: 相同路径下配置在前的优先

    可选依赖

    可选依赖表示这个依赖不是必须的。通过在添true>表示, 默认是不可选的。可选依赖不会被传递

    排除依赖

    即排除指定的间接依赖. 通过配置配置排除指定组件

    依赖范围

    compile(默认): 编译范围, 编译和打包都会依赖 provided: 提供范围, 编译时依赖, 但不会打包进去. 如: servlet-api.jar runtime: 运行时范围, 打包时依赖, 编译不会. 如: mysql-connection-java.jar test: 测试范围. 编译运行测试用例依赖, 不会打包进去. 如: junit.jar

    maven生命周期

    生命周期的概念与意义

    在项目构建时通常会包含清理, 编译, 测试, 打包, 验证, 文档生成等步骤. maven统一对其进行了整理抽象成三个生命周期(lifecycle)及各自对应的多个阶段(phase). 这么做的意义是:

    每个阶段都成为了一个扩展点, 可以采用不同的方式实现, 提高了扩展性与灵活性规范统一了maven的执行路径 在执行项目构建阶段可以采用jar方式构建也可以采用war包方式构建提高了灵活性

    maven三大生命周期与其对应的phase

    maven总共包含三大生命周期

    clean Lifecycle: 清理生命周期, 用于清理项目default Lifecycle: 默认生命周期, 用于编译, 打包, 测试, 部署等site Lifecycle: 站点文档生成, 用于构建站点文档

    生命周期与插件的关系

    生命周期的phase组成了项目构建的完整过程, 这些过程具体由插件实现. maven的核心代码很少, 大部分实现都由插件来完成。比如: test阶段就是由maven-surefire-plugin实现. 在pom.xml中可以设置指定插件目标(gogal)与phase绑定. 当项目构建达到指定的phase时, 就会触发插件gogal的执行

    Processed: 0.009, SQL: 8