zoukankan      html  css  js  c++  java
  • Maven

    一、是什么(What)

    1. 构建:把web工程,编译后部署到服务器上的整个过程

    2. maven是一个自动化构建工具,服务于Java平台

    3. 自动化构建工具的进化:make->Ant->Maven->Gradle

    4. 构建的环节:清理clean->编译comple->测试test->打包package->安装install->部署deploy

    二、为什么使用Maven(Why)

    1. 项目太大,不好拆分

    2. 依赖的jar包需要复制粘贴到项目的lib中,需要手动下载和操作

    3. jar包可能不一致

    4. 依赖jar包的依赖,也要手动添加

    三、Maven的作用

    1. 项目构建,即自动化地进行编译、测试、部署等操作

    2. 依赖管理,自动获取并管理依赖的类库或者框架

    四、Maven仓库

    1. 中央仓库, 提供公共的镜像地址,所有的组件都发布到上面去,这样构成了一个完整的生态环境,文件管理按坐标中“.”的目录层级

    2. 私服,比如Sonatype Nexus,私服地址在settings.xml中的profile中配置,同时可能需要配置servers标签,用于用户名和密码

    http://www.blogjava.net/xiaomage234/archive/2014/05/13/413584.html

    3. 本地仓库,按目录级别存储,一般都在用户目录.m2下(即maven安装目录下conf/settings.xml的localRepositoty标签配置)

    五、安装

    1. 安装JDK,配置JAVA_HOME的环境变量

    2. 下载解压maven,放在非中文无空格的路径下

    3. 配置maven的环境变量

    a. windows系统:增加环境变量M2_HOME,路径是maven解压后的根目录,在环境变量path中,增加%M2_HOME%in

    b. MAC系统:https://blog.csdn.net/anialy/article/details/22217937

    4. mvn -version查看maven版本

    六、生命周期(3套)

    1. Clean Lifecycle 清理工作

    2. Default Lifecycle 核心部分 

    a. clean, 清除target

    b. validate, 验证工程是否正确

    c. compile,编译代码,生成class

    d. test, 可选,测试,测试代码不会被打包或者部署

    e. package,生成jar,即一个zip压缩文件

    f. verify

    g. install,拷贝到本地仓库

    h. site

    i. deploy,上传到远程仓库

    3. Site Lifecycle 生成项目报告,发布站点

    mvn clean deploy -Dmaven.test.skip 忽略测试代码

    七、Maven规则

    1. 坐标,用于识别一个依赖,可以映射到仓库路径

    <groupId>org.apache</groupId>             // 通常为组织的定义,建议公司域名反过来,如org.apache
    <artifactId>commons-lang</artifactId>     // 项目或工程的名称
    <version>1.4.1</version>                  // 版本号,1.0 或1.0-SNAPSHOT,稳定版或快照版
    <package>jar</package>                    // 默认是jar,也可以是ear/war/pom/apk,实质都是zip包
    <scope>compile</scope>                    // 默认compile,可以是compile/runtime/test/provided
     
    2.scope依赖范围
    a. 默认是compile, 适用于所有阶段,依赖会随着项目一起发布
    b. provided,期望别的项目会提供这个依赖
    c. test, 测试时使用,不随项目发布,用于编译和测试阶段
    d. runtime,运行时使用,用于运行和测试阶段
    e. system,不推荐使用,显式指定依赖路径,用于从本地系统找到依赖
     

    3. 依赖

    a. 在pom.xml文件里,一般先引用父pom,把重复依赖都放父pom里

    <parent
        <groupId>com.demo</groupId
        <artifactId>parent-pom</artifactId
        <version>1.0</version
    </parent>
     
    b. dependency vs dependencyManagement
    dependency 真实地下载依赖
    dependencyManagement 只是指定了一个规则,不指定version

    c. 依赖冲突

    用exclusion排除冲突版本

     
     
    七、高级特性
    1. 依赖传递性
    A->B, B->C, 则A->C
     
    2. 版本依赖原则

    a. 路径最短优先原则: A -> B -> E -> C(1.0),A -> D -> C (2.0),后面的路径较短,选后面那个

    b. 声明优先原则: 依赖路径相同时,比如A -> B -> C(1.0),A -> D -> C (2.0),这时路径是相同的,如果pom中B在D前面,就选B依赖的C(1.0)

    3. 统一管理依赖的版本号

    properties标签

    4. 依赖环

    A->B->C->A, 但最后一个A不是最新的

  • 相关阅读:
    阿里云观察——阿里云总裁王坚专访
    追寻凌云梦——对话阿里云总裁王坚
    四维的王坚和三维的阿里互联网汽车
    [2011移动者开发大会]王坚:互联网最革命的事是所有事情从离线到在线
    2013年8月,阿里云飞天5K集群成功上线,所有的服务对应的都是同一个系统内核、同一套分布式文件系统
    [搜索引擎大会]谷歌CEO Eric Schmit第一次高调用云和云计算的概念来描述谷歌所提供的互联网服务
    热门搜索引擎的TOP-K算法的python实现(回溯算法遍历trie树)
    海量日志数据提取出访问次数最多的那个IP python实现 总结
    Web数据挖掘 第十二章 Web使用挖掘的读书笔记
    Web数据挖掘 第十一章 观点挖掘和情感分析的读书笔记
  • 原文地址:https://www.cnblogs.com/june0816/p/6270209.html
Copyright © 2011-2022 走看看