自动化构建工具~Maven

maven图

一、目前框架需要的技术

简单业务图

二、目前的技术在开发的过程中存在的问题

2.1 一个项目就是一个工程

  • 如果项目非常庞大,不适合继续使用package来划分模块,最好是每个模块对应一个工程,利于分工协作。
  • 借助于Maven可以实现一个项目拆分成多个工程

2.2 项目中需要的jar包必须手动复制、粘贴、到WEB-INF/lib目录下

  • 带来的问题是:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿
  • 借助Maven,可以将jar包仅仅保持在“仓库”中,有需要使用的工程引用这个文件接口,并需要真的把jar包复制过来。

2.3 jar包需要别人为我们准备好,或者官网下载

  • 不同技术的官网提供的jar包下载形式是五花八门。
  • 有些技术的官网就是通过Maven或者SVN等工具进行下载的。

2.4 一个jar包依赖的其他jar包需要自己手动加入到项目中

  • FileUpload文件上传->IO组件,commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。
  • 所有jar之间的依赖关系,程序员自我了解,增加学习成本。
  • Maven会自动将依赖的jar包导入进来。

三、 Maven是什么

Maven是一款服务于Java平台的自动化构建工具

  • Make->ant->Maven->Gradle

3.1 Maven的构建

  1. 编译过程

    • Java源文件(.java)->编译->字节码文件(.class)->交给JVM执行
  2. 部署

    • 一个BS项目最终运行并不是动态WEB本身,而是这个动态Web工程“编译的结果”
    • 动态Web工程->编译、部署->编译结果
    web工程部署
  3. 搭建

3.2 构建过程中的各个环节

  1. 清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
  2. 编译:将Java源程序编程class字节码文件
  3. 测试:自动测试,调用junit程序
  4. 报告:测试程序执行的结果
  5. 打包:动态web工程打成war包,Java工程打jar包
  6. 安装:Maven特定的概念--将打包得到的文件复制到仓库中的指定位置
  7. 部署:将动态web工程生产的war包复制到Servlet容器的指定目录下,使其可以运行。

3.3 安装Maven核心程序

  • 检查JAVA_HOME环境变量
  • 解压Maven核心程序
  • 配置环境变量
  • 验证

3.4 Maven的核心概念

  • 约定的目录结构

  • POM

    • pom.xml是Maven工程的核心配置文件
  • 坐标

    • 由三个关键来确定,groupId、artifactId、version
    • 分别是公司或组织名+项目名、模块名、版本号
    • 其中坐标和仓库路径:groupId/artifactId/version/artifactId+version.jar
  • 依赖

    传递依赖
    • Maven解析依赖时会到本地仓库中进行查找依赖的包

      • 对于我们自己开发的包,需要使用mvn install命令安装后可以进入仓库
    • 依赖的范围

      • 1 compile

      • 对主程序是否有效 --有效

      • 对测试程序是否有效 --有效

      • 是否参与打包 --参与

      compile
    • 2 test

      • 对主程序是否有效 --无效
      • 对测试程序是否有效 --有效
      • 是否参与打包 --不参与
      • 典型例子:junit
    • 3 provided

      • 对主程序是否有效 --有效
      • 对测试程序是否有效 --有效
      • 是否参与打包 --不参与,不参与部署
      • 典型例子:servlet-api.jar
      prrvided图
  • 仓库

    • 仓库的分类
      • 本地仓库:当前电脑中部署的仓库
      • 远程仓库
        • 私服:搭建在局域网中,为局域网中所有Maven工程服务
        • 中央仓库:架设在Internet上,为全世界的Maven工程提供服务
        • 中央仓库镜像:架设在各个大洲的,为中央仓库分担流量的,减轻中央仓库的压力,更快响应用户的请求。
    • 仓库中保存的内容:仓库中保存的都是Maven工程
      • Maven自身所需要的插件
      • 第三方框架或工具的jar包
      • 我们自己开发的Maven工程
  • 生命周期/插件/目标

  • 继承

  • 聚合

四、Maven工程

4.1 约定的目录结构

  • 1 根目录:工程名
  • 2 src目录:源码
  • 3 pom.xml文件:Maven工程的核心配置文件
  • 4 main目录:存放主程序
  • 5 test目录:存放测试程序
  • 6 Java目录:Java源文件
  • 7 resources目录:存放框架或其他工具的配置文件
目录结构

4.2、为什么要遵守约定的目录结构

  • Maven负责项目的自动构建
  • 约定>配置>编码

五、 常用Maven命令

5.1 注意:执行与构建过程相关的Maven命令,必须进入pom.xml所在的目录

  • 与构建过程相关:编译、测试、打包......

5.2 常用的命令

  • mvn clean:清理
  • mvn compile:编译主程序
  • mvn test-compile:编译测试程序
  • mvn test:执行测试
  • mvn package:打包
  • mvn install:安装包至仓库
  • mvn site:生产站点

六、 关于Maven联网的问题

  • 1 Maven的核心程序中仅仅定义了抽象的生命周期,但具体的工作必须由特定的插件来完成,而插件本身并不包含在Maven的核心程序中
  • 2 当我的Maven命令需要某些插件时,Maven核心程序会首先到本地仓库中查找
  • 3 本地仓库的默认位置:C:\Users\LJLRY.m2\repository
  • 4 Maven核心程序如果在本地仓库中找不到需要的插件,那么会自动的到中央仓库进行下载
  • 5 如果此时无法连接外网,则构建失败
  • 6 修改本地默认的仓库位置
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351