ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Maven学习笔记

2021-04-11 20:03:12  阅读:151  来源: 互联网

标签:学习 java 文件 仓库 jar 笔记 Maven 编译 maven


Maven

学习资源:https://www.bilibili.com/video/BV1dp4y1Q7Hf?p=1

一、 简介

  • 定位:项目构建工具

  • 功能

    • 管理jar文件;自动下载jar文件及其文档,源代码

    • 管理jar直接的依赖,自动下载依赖

    • 管理jar版本

    • 编译程序,.java到.class

    • 打包文件,形成jar文件或者war文件

    • 部署项目

  • 构建

    • 面向过程的,即完成代码的 编译,测试,打包,部署等等

    • maven支持的构建包括

      • 清理,把之前项目编译的内容删除

      • 编译,将源代码编译成可执行代码(批量,javac一次只能编译一个文件)

      • 测试,同时执行多个ut

      • 报告,生成测试结果文件

      • 打包,将项目中所有的class文件,配置文件及资源发到一个压缩文件中,扩展名是.jar;对于web应用,对应的扩展名称是.war

      • 安装,将打包生成的.jar、.war安装到本地repo中

      • 部署(不常用)

  • maven的核心概念

    • POM: 一个文件pom.xml
      项目对象模型;maven将一个项目当做模型使用。同过这个文件控制maven项目的构建,管理jar依赖

    • 约定的目录结构:maven中项目的目录及文件的位置是有规定的

    • 坐标:是一个唯一的字符串;表示资源的

    • 依赖管理:管理项目中可以使用的jar文件

    • =以下几项作为了解=

    • 仓库管理:资源的存放位置

    • 生命周期:maven工具构建项目的过程就是生命周期

    • 插件及目标

    • 继承

    • 聚合

  • maven的安装及配置

    • 子目录

      • bin:执行程序,主要是mvn.cmd

      • conf:maven工具本身的配置文件 settings.xml

    • 在这里插入图片描述

二、maven的核心概念

  • maven工程约定的目录结构

    • 每一个maven的项目在磁盘上都是一个文件夹(项目 Hello)

      Hello/

      —/src

      ------/main #存放主程序java代码和配置文件

      ----------/java #程序包及其中的java文件

      ----------/resources #配置文件

      ------/test #放置测试程序代码及文件

      ----------/java #程序包及其中的java文件

      ----------/resources #配置文件

      —pom.xml #maven的核心文件(maven 项目必须有)

  • mvn compile
    编译src/main目录下的所有java文件;编译完成后会在项目目录下生成一个结果目录(target,里面存放着编译完的class)

    • 为什么要下载

      • maven工具执行的过程中需要很多插件(java类—jar文件)完成的
    • 下载了什么

      • jar文件 ----也叫插件,完成某些功能
    • 从哪里下载的

      • httpsL://repo.maven.apache.org 中央仓库地址
    • 存到了哪里

      • 放在<localRepository>E://maven//LocalRepo</localRepository>配置的路径中

      • 配置文件:apache-maven-3.6.3\conf\settings.xml

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oKTyByGd-1618141936547)(media/616a50ce7c605490f76a8daa41cb7576.png)]

  • maven仓库的概念

    • 仓库的作用

      • 存储maven使用的插件;代码中使用的jar包
    • 仓库的分类

      • 本地仓库;计算机上的路径

      • 远程仓库;

        • 需要使用网络下载 中央仓库

        • 中央仓库的镜像 (能够减小中央仓库的压力)

        • 私服;公司内部的局域网;不对外

    • 仓库的使用

      • maven去查本地仓库 <> 私服 <> 镜像 <> 中央仓库(很多种类)
    • 设置本地仓库

      • 放在<localRepository>E://maven//LocalRepo</localRepository>配置的路径中

      • 配置文件:apache-maven-3.6.3\conf\settings.xml

  • pom.xml的介绍

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGWP78MD-1618141936548)(media/668f508d9b11d14616c265a06fc4b272.png)]

    • 在这里插入图片描述

    • 在这里插入图片描述

    • groupId; artifactId; version 统称为
      坐标;能够唯一标识资源(jar)同时,这三个字符串对应着本地仓库对应依赖所在的路径

      • 例:E:\maven\LocalRepo\log4j\log4j\1.2.12

        • <!-- https://mvnrepository.com/artifact/log4j/log4j -->

        • <dependency>

        • <groupId>log4j</groupId>

        • <artifactId>log4j</artifactId>

        • <version>1.2.12</version>

        • </dependency>

          <groupId>公司域名倒写</groupId>

          <artifactId>自定义项目名称</artifactId>

          <version>自定义版本号(带SNAPSHOT表示不稳定版本)</version>

  • 如何使用坐标在网络上找到资源

    • https://mvnrepository.com/ maven搜索使用的中央仓库;使用groupId /
      artifactId作为关键词;e.g: mysql

      • https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.9

      • 在这里插入图片描述

  • maven的生命周期;常用命令;插件

    • maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署

    • maven的命令:maven可以独立使用,通过命令完成maven的生命周期的执行。

      • mvn compile //
        只编译main/java下的;同时在编译过程中,mvn会将resources下的内容copy到target/classes下面

      • mvn test-compile // 只编译test/java下的

      • mvn clean //
        清理(删除target目录下的内容,但是已经下载的包不会删除)

      • mvn test // 测试(回生成测试报告)

      • mvn package //
        打包主程序(会编译,编译测试,测试,并且按照pom.xml配置把主程序打包成jar或者war)

      • mvn install //
        安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)

      • mvn deploy //
        部署主程序(会把主程序打包,按照本工程的坐标保存到仓库中,并且还会保存到私服仓库中)

      • 注意:执行上述命令必须在pom.xml所在目录下

    • maven的插件:maven命令执行时,真正完成功能的是插件,就是一些jar文件,一些类

  • 其他

    • 插件也可以在pom.xml中进行配置

      在这里插入图片描述

三、Maven在IDEA中的使用

  • IDEA中配置maven

    • 在这里插入图片描述

四、Maven常用技巧

  • pom依赖缺失报错解决

    • 在这里插入图片描述
  • IDEA导入Maven工程

    • 在这里插入图片描述

五、依赖范围scope

  • scope的值有 compile(默认);test;provided

    表示依赖的使用范围,也就是在Maven构建的哪些阶段有作用

    [编译,测试,打包,安装,部署]

    • test:只在测试阶段起作用;

    • compile:编译及声明周期之后阶段; 打包时会放在lib下

    • provided:提供者自带(只在编译测试阶段需要;打包安装的时候不需要)

  • 在这里插入图片描述

六、Maven常用操作

  • 属性设置 properties

    • 在这里插入图片描述
  • 全局变量(自定义属性)

    • 在<properties>中通过自定义标签声明变量(标签名就是变量名)

    • 在pom.xml文件中的其他位置,

      • 用法:${标签名}

      • 应用场景: 多个相同的版本号

      • 例:<spring.version>5.2.5</spring.version>

  • 指定资源位置插件

    • 作用

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9A15UOrV-1618141936554)(media/6cb5c72f10cc0c3ea59eaf6339a52add.png)]

标签:学习,java,文件,仓库,jar,笔记,Maven,编译,maven
来源: https://blog.csdn.net/CSDN_WHB/article/details/115604898

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有