那Maven是如何帮我们进行项目资源管理的呢?这就需要用到Maven中的第二个东西:依赖管理。这也是它的第二个核心!

所谓依赖管理就是maven对项目所有依赖资源的一种管理,它和项目之间是一种双向关系,即当我们做项目的时候maven的依赖管理可以帮助你去管理你所需要的其他资源,当其他的项目需要依赖我们项目的时候,maven也会把我们的项目当作一种资源去进行管理,这就是一种双向关系。

那maven的依赖管理它管理的这些资源存在哪儿呢?主要有三个位置:本地仓库,私服,中央仓库

本地仓库顾名思义就是存储在本地的一种资源仓库,如果本地仓库中没有相关资源,可以去私服上获取,私服也是一个资源仓库,只不过不在本地,是一种远程仓库,如果私服上也没有相关资源,可以去中央仓库去获取,中央仓库也是一种远程仓库。

Maven除了帮我们管理项目资源之外还能帮助我们对项目进行构建,管理项目的整个生命周期,当然它的这些功能需要使用一些相关的插件来完成,当然整个生命周期过程中插件是需要配合使用的,单独一个无法完成完整的生命周期。

1.2、Maven的作用


Maven的作用我们可以分成三类:

(1)项目构建:提供标准的,跨平台的自动化构建项目的方式

(2)依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突等问题

(3)统一开发结构:提供标准的,统一的项目开发结构,如下图所示:

各目录存放资源类型说明:

src/main/java:项目java源码

src/main/resources:项目的相关配置文件(比如mybatis配置,xml映射配置,自定义配置文件等)

src/main/webapp:web资源(比如html,css,js等)

src/test/java:测试代码

src/test/resources:测试相关配置文件

src/pom.xml:项目pom文件

2、下载安装Maven

=============================================================================

2.1、新版下载


官网:Maven官网

2.2、旧版下载


旧版本下载步骤:我们以3.6.1版本为例

点击 sources

2.3、安装


maven是一个绿色软件,解压即安装,非常容易,

我们将下载好的apache-maven-3.6.1-bin.zip直接解压到D盘根目录下即可

解压完成后我们可以查看一下maven自己的一个目录结构如下

各目录结构说明:

bin:可执行程序目录,

boot:maven自身的启动加载器

conf:maven配置文件的存放目录

lib:maven运行所需库的存放目录

2.4、配置环境变量


我的电脑-------->属性--------->高级系统设置---------->新建系统变量MAVEN_HOME

在我们的系统环境变量中

配置如下配置:

  • M2_HOME maven目录下的bin目录

  • MAVEN_HOME maven的目录

  • 在系统的path中配置 %MAVEN_HOME%\bin

  • 之后在命令行窗口中输入mvn -version

  • 测试Maven是否安装成功,保证必须配置完毕!


环境变量配置好之后需要测试环境配置结果,我们需要在DOS命令窗口下输入以下命令查看输出

mvn -v

如果能够看到输出的maven的版本信息代表配置成功

2.5、配置阿里云镜像


  • 国内建议使用阿里云的镜像(可以百度搜 maven 阿里云镜像,也可以打开下方链接)

  • 阿里云链接直达

  • settings.xml里面的mirrors标签里面导入

aliyunmaven

*

阿里云公共仓库

https://maven.aliyun.com/repository/public

2.6、配置本地仓库


在Maven -bin 的同级目录下建立一个文件夹 maven-repo

建立一个本地仓库:localRepository

  • settings.xml里面的localRepository下导入

D:\Develop\apache-maven-3.6.1\maven-repo

3、Maveb基础概念

=============================================================================

3.1、仓库


仓库:用于存储资源,主要是各种jar包

关于仓库,我们前面讲到了有三种:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库

中央仓库:maven团队自身维护的仓库,属于开源的

私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源

本地仓库:开发者自己电脑上存储资源的仓库,也可从远程仓库获取资源

私服的作用:

(1)保存具有版权的资源,包含购买或自主研发的jar

(2)一定范围内共享资源,能做到仅对内不对外开放

3.2、坐标


我们说maven的仓库里存储了各种各样的资源(jar包),那这些资源我们如何找到它们呢?我们需要知道它们具体的一个位置才能知道如何找到它们,这个就叫坐标

坐标:maven中的坐标用于描述仓库中资源的位置

maven坐标的主要组成如下:

  • groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.itheima)

  • artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)

  • version:定义当前资源的版本号

  • packaging:定义资源的打包方式,取值一般有如下三种

  • jar:该资源打成jar包,默认是jar java工程打包为jar

  • war:该资源打成war包 web工程打包为war

  • pom:该资源是一个父资源(表明使用maven分模块管理),打包时只生成一个pom.xml不生成jar或其他包结构

<?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”>

4.0.0

war

com.itheima

web01

1.0-SNAPSHOT

4、创建一个MavenWeb项目

==================================================================================

  1. 启动IDEA

  2. 创建一个MavenWeb项目

  1. 创建完成等待项目初始化完成

  1. 观察maven仓库中多了什么东西?

  2. 注意:IDEA项目创建成功后,看一眼Maven的配置

到这里,Maven在IDEA中的配置和使用就OK了!

4.1、标记文件夹功能


我们在创建的MavenWeb 项目的 main 目录下创建 java,resources

  1. 鼠标悬停在java文件夹,右键

  1. resources 也同样标记

创建MavenWeb 项目我们需要手动去补全目录,并且要对补全的目录进行标记,切记

5、创建一个普通的Maven项目

==================================================================================

5.1、IDEA配置Tomcat


IDEA配置Tomcat步骤

我们也可以不配置Tomcat,而是在 pom.xml 中配置 tomcat 插件来运行项目

  • 在Maven仓库中搜索

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

tomcat Maven

  • 找到 org.apache.tomcat.maven

我们使用2.1版本的,相对来说稳定一些

org.apache.tomcat.maven

tomcat7-maven-plugin

2.1

80

/

插件配置好后,在IDEA右侧maven-project操作面板上可以看到该插件,并且可以利用该插件启动项目

运行后该插件会给我们一个可运行地址:

5.2、pom文件


pom.xml 是Maven的核心配置文件

<?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”>

4.0.0

com.kuang

javaweb-01-maven

1.0-SNAPSHOT

war

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

junit

junit

4.11

javaweb-01-maven

maven-clean-plugin

3.1.0

maven-resources-plugin

3.0.2

maven-compiler-plugin

3.8.0

maven-surefire-plugin

2.22.1

maven-war-plugin

3.2.2

maven-install-plugin

2.5.2

maven-deploy-plugin

2.8.2

6、Maven依赖管理

=============================================================================

6.1、依赖配置与依赖传递


依赖是指在当前项目中运行所需的jar,依赖配置的格式如下:

Junit

Junit

4.12

依赖传递:

依赖具有传递性,分两种

(1)直接依赖:在当前项目中通过依赖配置建立的依赖关系

(2)间接依赖:被依赖的资源如果依赖其他资源,则表明当前项目间接依赖其他资源

6.1.1、依赖传递冲突

依赖传递的冲突问题:

在依赖传递过程中产生了冲突,我们有三种优先法则

(1)路径优先:当依赖中出现相同资源时,层级越深,优先级越低,反之则越高

(2)声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖靠后的

(3)特殊优先:当同级配置了相同资源的不同版本时,后配置的覆盖先配置的

以一个项目为根,直接依赖称为1度资源,直接依赖的直接依赖称为2度资源,直接依赖的直接依赖的直接依赖称为3度资源。

当然依赖冲突在这里我们并不需要记,后面会有如何解决此问题的办法。

6.1.2、可选依赖

可选依赖指的是对外隐藏当前所依赖的资源➡不透明

  • 加一个<optional> 标签

Junit

Junit

4.12

true

6.1.3、排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本

Junit

Junit

4.12

log4j

log4j

Maven技术快速入门,高级java开发工程师的工作总结相关推荐

  1. 如何才能成为高级Java开发工程师

    根据技术水平不同,Java程序员可以分为初级.中级.高级.资深等.不同级别的Java程序员,企业的要求也是有区别.那么,该如何才能成为高级Java开发工程师? 如何才能成为高级Java开发工程师 想要 ...

  2. 北京java研发平均工资_各地java开发工程师平均工资 北京高级java开发工程师工资2万多...

    原标题:各地java开发工程师平均工资 北京高级java开发工程师工资2万多 java开发工程师工资水平一直都是程序员们比较关注的话题,毕竟java是最热门的编程的语言.每个城市的由于经济水平的差距, ...

  3. 冒充java诈骗_天下代码一大抄,整个案例的搬是什么鬼!疑似冒充蚂蚁金服高级Java开发工程师?你大爷...

    写在开始 上班前的第一件事,就是码云看看有什么消息,回复下网友的问题.如果看到喜欢的项目会点进去瞅瞅,然后就开始一天的工作. 然而,这一天的工作并不开心,一个今日热门项目让自己很恼火,一开始感觉并没有 ...

  4. 序:何为高级java开发工程师?

    高级开发工程师 开发工程师的分级 初级java开发 : 中级java开发 高级java开发 技术 业务 管理 开发工程师的分级 在软件开发行业,通常会对工程师做分级,各大厂通常有自己内部的职级划分和评 ...

  5. java开发工程师每天工作几小时,详细说明

    Java开发工程师前途在哪里?常听到有人这么说:现在Java开发工程师的前途在哪儿?如何成为一名优秀的Java工程师?我的路该怎么走?很多人想着自己初出茅庐,不知这个专 Java工程师人才的需求还在不 ...

  6. 怎样才算高级Java开发工程师_怎样才能成为一名高级java软件工程师?

    从低级java程序员专注java技术路线发展,可以成为一个令人敬仰的高级java工程师,当然java高级工程师也不是那么容易练就的,java程序员该朝哪些方向努力向高级java工程师发展?怎样成为一个 ...

  7. 得物java怎么样_[上海] 得物(毒 app) 国际技术 招聘 高级 Java 开发工程师

    得物(毒 app) 国际技术的内推来了,简历直呈 leader,加快面试流程,一有反馈立即回复. Q: 国际技术是做什么的? A: 负责开拓得物的国际市场,已在香港地区上线 app 开展业务,接下来会 ...

  8. 人生感悟:欲望适度则为利,欲望过度则为害,高级java开发工程师简历

    世人都晓神仙好,只有金银忘不了!终朝只恨聚无多,及到多时眼闭了. 世人都晓神仙好,只有娇妻忘不了!君生日日说恩情,君死又随人去了. 世人都晓神仙好,只有儿孙忘不了!痴心父母古来多,孝顺儿孙谁见了? 曹 ...

  9. 惊喜!高级java开发工程师简历

    线程 线程的启动 实现Runnab1e接口 继承Thread类 实现Callable接口 线程的状态 线程的方法 线程的优先级 守护线程 未捕获异常处理器 并发编程的问题 线程引入开销:上下文切换与内 ...

最新文章

  1. kali linux安装ftp服务,CentOS7安装和配置FTP
  2. php 添加行_php 多行数据同时插入
  3. Selenium 爬虫时遇到的问题 Selenium message:session not created
  4. Linux下用Xdebug调试php
  5. vissim跟驰模型_VISSIM是什么工具?你对VISSIM了解多少?
  6. 于ubuntu配置hadoop当问题
  7. FrameLayout(帧布局)的基本使用
  8. STM32开发 -- 低功耗模式详解(1)
  9. 合肥中学计算机老师招聘,2019年合肥北城中学教师招聘公告
  10. 微信小程序 子组件调用父组件方法
  11. 青海西宁市大通县非洲猪瘟疫区解除封锁
  12. 5.11 学习日记,首页banner做好了
  13. 支持markdown的服务器,基于tornado实现的一个markdown解析服务器
  14. 单例模式 java 实现_单例模式
  15. 【高级】分表和分区的区别、分库分表介绍与区别
  16. linux常用命令速查手册PDF下载
  17. 树莓派4支持多大tf卡_树莓派raspberry4B入坑指南 part-0
  18. JVM调优--04---dump文件分析 、arthas在线排查工具
  19. js 表单打开新窗口
  20. 一维热传导问题与C++描述

热门文章

  1. linux UTF8环境下,传入gbk字符调试程序
  2. 离散数学复习笔记——数理逻辑
  3. 【仿真建模】第五课:AnyLogic入门基础课程 - 地铁车站仿真讲解
  4. JavaScript基础-ES6
  5. Makefile生成 静态链接库万能模板(当前文件夹、递归全部文件夹编译成.a)
  6. 南师大C:分鱼问题2(7筐鱼)
  7. 什么是GPU云服务器?GPU服务器的cpu和普通CPU有什么区别?
  8. 只看优点,这2款可视化产品你更心水谁?
  9. 跑cyclegan时遇到了ConnectionError: HTTPConnectionPool(host=‘localhost‘, port=8097): Max retries exceeded
  10. KVM虚拟化工具简介及安装