Maven

为什么要使用Maven

  1. 添加第三方jar包,使用Maven后,jar包没必要复制到lib文件下了,只需要给一个坐标就行
  2. 解决jar包之间的依赖关系,Maven会自动将当前jar包依赖的包引入
  3. 处理jar包的冲突,Maven中内置了两条依赖原则:最短路径者优先和先声明者优先,防止出现jar包冲突
  4. 获取第三方jar包,建立父工程
  5. 实现项目的分布式部署,多个模块之间的依赖关系,

Maven是什么

一个自动化构建工具

Maven的核心概念

  1. POM:项目对象模型。将Java工程的相关信息封装为对象作为便于操作和管理的模型。Maven工程的核心配置。可以说学习Maven就是学习pom.xml文件中的配置。
  2. 约定的目录结构:现在JavaEE开发领域普遍认同一个观点:约定>配置>编码。意思就是能用配置解决的问题就不编码,能基于约定的就不进行配置。在idea中自己生成了其实
  3. 坐标
    使用如下三个向量在Maven的仓库中唯一的确定一个Maven工程。
  • [1]groupId:公司或组织的域名倒序+当前项目名称
  • [2]artifactId:当前项目的模块名称
  • [3]version:当前模块的版本
  1. 依赖,当A jar包需要用到B jar包中的类时,我们就说A对B有依赖。例如:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。python到处是依赖
  • 依赖的范围
    -- 只有依赖范围时可以访问
    -- 路径最短者优先,a-->b-->c ,b和c都依赖一个包的不同版本,此时最短路径优先
    -- 这里“声明”的先后顺序指的是dependency标签配置的先后顺序。
  1. compile:主程序,测试程序都可以
  2. test:在主程序中不能用
  3. provided: 主程序和测试程序都可以用,但是在服务器上有可以不被使用
  • 依赖的传递性
  1. 仓库,本地仓库和远程仓库
  2. 生命周期:
  3. 插件:具体任务由插件完成

继承

解决非间接依赖的问题
创建父工程--》在子工程中引用父工程

// 父工程

    
        
            junit
            junit
            4.9
            test
        
    

//子项目

    
        junit
        junit
    

聚合

将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进行clean操作。而使用了聚合之后就可以批量进行Maven工程的安装、清理工作。


    ../Hello
    ../HelloFriend
    ../MakeFriends


你可能感兴趣的:(Maven)