Maven

第一章 为什么使用Maven

  • 获取jar包

    • 使用Maven之前,自行在网络中下载jar包,效率较低。如【谷歌、百度、CSDN…】
    • 使用Maven之后,统一在一个地址下载资源jar包【阿里云镜像服务器等…】
  • 添加jar包

    • 使用Maven之前,将jar复制到项目工程中,jar包添加到项目中,相对浪费存储空间
    • 使用Maven之后,jar包统一存储Maven本地仓库,使用坐标方式将jar包从仓库引入到项目中

  • 使用Maven便于解决jar包冲突及依赖问题

第二章 什么是Maven

  • Maven字面意:专家、内行
  • Maven是一款自动化构建工具,专注服务于Java平台的项目构建依赖管理
  • 依赖管理:jar之间的依赖关系,jar包管理问题统称为依赖管理
  • 项目构建:项目构建不等同于项目创建
    • 项目构建是一个过程【7步骤组成】,项目创建是瞬间完成的

      1. 清理:mvn clean
      2. 编译:mvn compile
      3. 测试:mvn test
      4. 报告:
      5. 打包:mvn package
      6. 安装:mvn install
      7. 部署:

第三章 Maven基本使用

3.1 Maven准备

注意:IDEA2019.1.x 最高支持Maven的3.6.0

  • 下载地址:http://maven.apache.org/
  • Maven底层使用Java语言编写的,所有需要配置JAVA_HOME环境变量及Path
  • 将Maven解压非中文无空格目录下
  • 配置MAVEN_HOME环境变量及Path
  • 输入【cmd】,进入命令行窗口,输入**【mvn -v】** ,检查Maven环境是否搭建成功

3.2 Maven基本配置

  • Maven配置文件位置:maven根目录/conf/settings.xml

  • 设置本地仓库【默认:C:/用户家目录/.m2/repository】

    <!-- localRepository| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository<localRepository>/path/to/local/repo</localRepository>--><localRepository>E:\SG_220106\LocalRepository</localRepository>
    
  • 设置阿里云镜像服务器

    <mirrors><!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.|<mirror><id>mirrorId</id><mirrorOf>repositoryId</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://my.repository.com/repo/path</url></mirror>--><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror></mirrors>
    
  • 设置使用JDK版本【1.8|JDK8】

    <profiles>
    <profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile></profiles>
    

3.3 Maven之Helloworld

约束>配置>代码

  • Maven工程目录结构约束

    • 项目名

      • src【书写源代码】

        • main【书写主程序代码】

          • java【书写java源代码】
          • resources【书写配置文件代码】
        • test【书写测试代码】
          • java【书写测试代码】
      • pom.xml【书写Maven配置】
  • 测试步骤

    • 进入项目名根目录【在根目标输入cmd即可】
    • mvn clean
    • mvn compile
    • mvn test-compile
    • mvn test
    • mvn package
    • mvn install

第四章 Maven及Idea的相关应用

4.1 将Maven整合到IDEA中


4.2 在IDEA中新建Maven工程


第五章 Maven核心概念

5.1 Maven的POM

  • POM全称:Project Object Model【项目对象模型】,将项目封装为对象模型,便于使用Maven管理【构建】项目

  • pom.xml常用标签

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!--    设置父工程坐标--><parent><artifactId>maven_demo</artifactId><groupId>com.atguigu</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>maven_helloworld</artifactId><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
    </project>
    

5.2 Maven约定的目录结构

  • 项目名

    • src【书写java源代码】

      • main【书写java主程序代码】

        • java【书写java代码】
        • resources【书写配置文件代码】
      • test【书写测试代码】
        • java【书写测试java代码】
    • pom.xml【书写配置文件代码】
    • target【编译后目录结构】

5.3 Maven生命周期

  • Maven生命周期:按照顺序执行各个命令,Maven生命周期包含以下三个部分组成

    • Clean LifeCycle:在进行真正的构建之前进行一些清理工作。
    • Default LifeCycle:构建的核心部分,编译,测试,打包,安装,部署等等。
    • Site LifeCycle:生成项目报告,站点,发布站点。

5.4 Maven插件和目标

  • 插件:插件本质是由jar包和配置文件组成
  • 目标:每个插件都能实现多个功能,每个功能就是一个插件目标。

5.5 Maven的仓库【重要】

  • 仓库分类

    • 本地仓库:为当前计算机提供maven服务
    • 远程仓库:为其他计算机也可以提供maven服务
      • 私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
      • 中央仓库:架设在Internet上,为全世界所有Maven工程服务。
      • 中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。
  • 仓库中的文件类型【jar包】
    • Maven的插件
    • 第三方框架或工具的jar包
    • 自己研发的项目或模块

5.6 Maven的坐标【重要】

  • 作用:使用坐标引入jar包

  • 坐标由g-a-v组成

    [1]groupId:公司或组织的域名倒序+当前项目名称

    [2]artifactId:当前项目的模块名称

    [3]version:当前模块的版本

  • 注意

    • g-a-v:本地仓库jar包位置
    • a-v:jar包全名
  • 坐标应用

    • 坐标参考网址:http://mvnrepository.com

    • 语法,示例

      <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.17</version></dependency>
      </dependencies>
      

第六章 Maven的依赖管理

6.1 依赖范围

  • 依赖语法:<scope>

    • compile【默认值】:在main、test、Tomcat【服务器】下均有效。
    • test:只能在test目录下有效
      • junit
    • provided:在main、test下均有效,Tomcat【服务器】无效。
      • servlet-api

6.2 依赖传递性

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

  • 先声明者优先

  • 注意:Maven可以自动解决jar包之间的依赖问题

第七章 Maven中统一管理版本号

  • 语法

    <properties><spring-version>5.3.17</spring-version>
    </properties>
    <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring-version}</version></dependency>
    </dependencies>
    

第七章 Maven的继承

7.1 为什么需要继承

  • 如子工程大部分都共同使用jar包,可以提取父工程中,使用【继承原理】在子工程中使用
  • 父工程打包方式,必须是pom方式

7.2 Maven继承方式一

  • 在父工程中的pom.xml中导入jar包,在子工程中统一使用。【所有子工程强制引入父工程jar包】

  • 示例代码

    <packaging>pom</packaging>
    <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
    

7.3 Maven继承方式二

  • 在父工程中导入jar包【pom.xml】

    <packaging>pom</packaging>
    <dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
    </dependencyManagement>
    
  • 在子工程引入父工程的相关jar包

    <parent><artifactId>maven_demo</artifactId><groupId>com.atguigu</groupId><version>1.0-SNAPSHOT</version><relativePath>../pom.xml</relativePath>
    </parent><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency>
    </dependencies>
    
  • 注意:在子工程中,不能指定版本号

第八章 Maven的聚合

  • 为什么使用Maven的聚合

    • 优势:只要将子工程聚合到父工程中,就可以实现效果:安装或清除父工程时,子工程会进行同步操作。
    • 注意:Maven会按照依赖顺序自动安装子工程
  • 语法

    <modules><module>maven_helloworld</module><module>HelloFriend</module><module>MakeFriend</module>
    </modules>
    

Maven的入门到精通系列(制作不易,望支持)相关推荐

  1. ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)

    文章目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集 ...

  2. 【ArcGIS遇上Python】从入门到精通系列之第一章:ArcGIS Python简介

    文章目录 1. Python简介 2. Python的特点 3. ArcGIS的脚本语言 4. ArcGIS中的Python脚本编辑器 1. Python简介 Python是一种跨平台的计算机程序设计 ...

  3. Linux从入门到精通系列之PPTP

    Linux从入门到精通系列之PPTP 今天我们来说下怎么在linux环境下如何搭建PPTP-×××,PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该 ...

  4. Jenkins pipeline 入门到精通系列文章

    Jenkins2 入门到精通系列文章. Jenkins2 下载与启动 jenkins2 插件安装 jenkins2 hellopipeline jenkins2 pipeline介绍 jenkins2 ...

  5. html5从基础到入门,Html5从入门到精通系列2:Html5基础

    Html5从入门到精通系列2:Html5基础 (2015-04-04 11:36:53) 标签: html5 html5教程 html5视频教程 html5从入门到精通 2-1.1.HTML5简介.M ...

  6. OpenShift从入门到精通系列之一:通过OpenShift实现数字化转型

    OpenShift从入门到精通系列之一:通过OpenShift实现数字化转型 一.企业数字化转型之PaaS 二.企业数字化转型之DevOps 三.企业数字化转型之微服务 四.微服务架构的主要类型 五. ...

  7. Vue3+TypeScript从入门到精通系列之:Try changing the lib compiler option to es2015 or later

    Vue3+TypeScript从入门到精通系列之:Try changing the lib compiler option to es2015 or later tsc ./泛型接口.ts tsc编译 ...

  8. 网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享

     网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享 韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇 韩顺平.循序渐进学.java.从入门到精通.第1讲-内容介绍.项 ...

  9. Oracle数据库从入门到精通系列之二:SGA和后台进程

    Oracle数据库从入门到精通系列之二:SGA和后台进程 一.SGA 二.后台进程 一.SGA Oracle有一个很大的内存块,称为系统全局区(SGA),用于(但不限于): 维护所有进程需要访问的内部 ...

最新文章

  1. csharp通过dll调用opencv函数,图片作为参数
  2. 学习笔记(十七)——redis(CRUD)
  3. Nginx服务的命令行控制
  4. Appleman and Tree CodeForces - 461B(树形dp)
  5. 【BZOJ1042】硬币购物(动态规划,容斥原理)
  6. 区块链技术公司谈找到合适的激励机制
  7. 省选专练 【BZOJ4773】负环
  8. MySQL分库、分表、分区的区别
  9. 时间序列之向量自回归检验VAR(自相关性)(2)
  10. 大数据技术之Spark入门(一)概述
  11. (Android) 如何使用HOOK实现动态注入以及自动化操作
  12. Kotlin基础知识5
  13. 20175208 实验一 Java开发环境的熟悉
  14. 开关电源的五种纹波噪声如何抑制?
  15. Python——输出大写英文字母
  16. C++的4种智能指针剖析使用
  17. 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列
  18. Hastelloy C-276 (UNS N10276) 含钨的镍-铬-钼合金
  19. 路由器的千兆是什么意思_千兆赫兹ghz到底是什么意思
  20. 什么是 TPMS(轮胎压力监视系统)系统

热门文章

  1. 【Arduino】入门篇——烟雾报警器
  2. 碧桂园博智林机器人总部大楼_碧桂园佛肇区域工程管理部参观博智林机器人创研中心总部大楼项目...
  3. 使用flash air开发应用
  4. 世界读书日图灵好书免费领
  5. 税务服务器管理系统登不上,网上税务局登录失败解决方案
  6. Windows Server 安装python时报策略不允许的解决方案
  7. vim显示行号_Linux Vim 显示行号 多窗口编辑 详解
  8. 微信外贸企业邮箱怎么登录?oa移动办公企业邮箱是哪个?
  9. 机器学习实战 学习记录 (4-5章)
  10. github开源代码gpl协议和lgpl协议的区别