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. 插件:具体任务由插件完成

继承

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

// 父工程
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
//子项目
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

聚合

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

<modules>
    <module>../Hello</module>
    <module>../HelloFriend</module>
    <module>../MakeFriends</module>
</modules>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 在Java项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。以往开发...
    JourWon阅读 4,765评论 0 1
  • 逅弈 转载请注明原创出处,谢谢! 以前的日子 以前我们写代码时,jar包都默认放在一个叫 /lib 的目录下,然后...
    逅弈阅读 8,097评论 3 45
  • 1 为什么使用Maven这样的构建工具 【Why】 1.1 一个项目就是一个工程 如果项目非常...
    coder_girl阅读 3,362评论 0 1
  • 思想:今天晨会我为大家分享了明代王阳明的《教条示龙场诸生·立志》,现在也和同学们分享一下,原文是“志不立,如无舵之...
    超潮超哥阅读 1,183评论 0 1
  • 今天我跳兔子舞跳的好老师给我们奖励小红花以后我会再接再厉的努力
    李淑洁阅读 1,150评论 0 0