栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1、Maven

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1、Maven

什么是Maven
  • Maven是一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。
  • 项目构建:
    • 项目构建不等同于项目创建,项目创建是一瞬间完成,项目构建是一个过程,这个过程包含以下7个步骤
    • 项目构建步骤
      • 清理
      • 编译
      • 测试
      • 报告
      • 打包
      • 安装
      • 部署
  • 依赖管理:jar包之间依赖【项目之间依赖】
maven的相关配置

在官网下载maven然后解压

把maven的目录配置到环境变量中

打开setting.xml文件进行相关的配置:

指定仓库,默认的仓库是

C:Userspandi.m2repository


指定阿里镜像

    
       nexus-aliyun
       *
       Nexus aliyun
       http://maven.aliyun.com/nexus/content/groups/public
    

指定jdk版本


      jdk-1.8
      
        true
        1.8
      
      
        1.8
        1.8
        1.8
      
    
idea整合maven

File=>settings=>Maven

新建maven项目

idea的版本过高的话会没有新建maven的那个选项,有Maven Archetype 这时候点上面的那个New Project创建maven项目

下面就是maven项目创建的界面了

maven 核心概念 pom概述
  • pom:project object model【项目对象模型:将整个项目封装为对象模型,便于maven管理项目】
    • dom:document object model【文档对象模型】
  • pom.xml基本结构


    
    
        maven_pro
        com.atguigu
        1.0-SNAPSHOT
    
    
    4.0.0
    
    Hello
	
    pom
    
    
    
    
    
    
        
            junit
            junit
            4.12
            test
        

    

Maven工程约定目录结构
  • Java圈不成文规则【约束(约定)>配置>代码】

  • 普通java工程

    • 项目名称【模块名称】
      • src【书写源代码】
        • main【主程序代码】
          • java【java代码】
          • resources【配置文件】
        • test【测试代码】
          • java【java代码】
      • pom.xml【书写maven配置文件】
      • target【编译后】

        web版maven工程
  • 项目名称【模块名称】

    • src【书写源代码】
      • main【主程序代码】
        • java【java代码】
        • resources【配置文件】
        • webapp
          • WEB-INF
            • web.xml
      • test【测试代码】
        • java【java代码】
    • pom.xml【书写maven配置文件】
    • target【编译后】
Maven的插件与目标
  • 插件
    • 本质:由jar包和配置文件组成
    • 作用:实现maven功能
  • 目标
    • 插件与目标关系:每个插件都能实现多个功能,每个功能就是一个插件目标。
Maven生命周期
  • 概述:
    • Maven生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven就可以自动化的执行构建命令了。
    • Maven有三套相互独立的生命周期,相互不影响,分别是:
      • Clean Lifecycle在进行真正的构建之前进行一些清理工作。
      • Default Lifecycle构建的核心部分,编译,测试,打包,安装,部署等等。
      • Site Lifecycle生成项目报告,站点,发布站点。
  • 注意:执行生命周期中后面构建环节,会默认执行前面构建环节【但:不会跨越独立生命周期执行】
Maven仓库【重点】
  • 仓库分类

    • 本地仓库:为当前本地计算机提供服务的仓库
    • 远程仓库:
      • 私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
        • 局域网:当前一间教室或某几间教室联网
        • 万维网:当前开通“外网”,可与全世界联网
      • 中央仓库:架设在Internet上,为全世界所有Maven工程服务。
      • 中央镜像仓库:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。
  • 仓库文件【jar包&配置文件】

    ① Maven的插件

    ② 我们自己开发的项目的模块

    ③ 第三方框架或工具的jar包

Maven坐标【重点】
  • 作用:使用坐标,将仓库中jar包引入到当前项目中【模块】
  • 语法:在pom.xml文件中,dependencies标签内部添加dependency标签即可
  • dependency标签内部详情:
    • groupId:当前公司或组织域名倒序
    • artifactId:当前项目名称
    • version:当前项目版本


    
        junit
        junit
        4.12
        test
    

  • 注意:
  • g-a-v:本地仓库jar包位置
  • a-v:jar包全名
  • 坐标与jar包对应关系:一个坐标对应“多”个jar包
  • 坐标查询:http://mvnrepository.com
Maven依赖【重点】
  • 基本概念

  • 当A jar包需要用到B jar包中的类时,我们就说A对B有依赖。例如:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。

  • 如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖。

  • 依赖语法

  • 在dependencies中添加一个子标签:

    • compile(默认就是这个范围):表示jar包在main、test、tomcat下均有效
    • test:表示jar包只能在test目录下有效【不会实现间接依赖】
    • provided:表示当前jar包只能main、test下有效【在tomcat下无效】【不会实现间接依赖】
      • servlet-api
  • 依赖传递性

  • 路径最短者优先【就近原则】

  • 先声明者优先原则

  • 统一管理版本号


    5.3.3

 
  		
            org.springframework
            spring-jdbc
            ${spring-version}
        
        
            org.springframework
            spring-orm
            ${spring-version}
        

Maven继承

打包方式:在pom.xml中添加标签

  • jar:java工程
jar
  • war:web工程
war
  • pom:父工程
pom
  • 方式一
    • 在父工程中pom.xml中导入相关jar包即可,在子工程就会自动导入【一定导入】
      • 注意:如子工程中存在相同的jar包,会覆盖父工程jar包
  • 方式二
    1. 先在父工程中定义需要被继承jar包

    
        
            
                junit
                junit
                4.13
            
        
    

2.在子工程中添加需要继承的jar包


    maven_pro
    com.atguigu
    1.0-SNAPSHOT
    
    ../pom.xml


    
        junit
        junit
        
    

注意:子工程中不能书写jar包的版本号

Maven聚合
  • 语法:在父工程中添加标签

  • 作用:清楚或安装父工程同时也会清楚或安装子工程

  • 注意:

    • 安装顺序由依赖顺序决定,而不是配置顺序决定

    • 清楚父工程时,只会清楚编译后代码【target目录】,不会清楚仓库已安装的jar包

  • 示例代码


    Hello
    HelloFriend
    MakeFriend
    OurFriend

在IDEA中创建Maven版的web工程
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863488.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号