maven

本文详细介绍了Maven作为依赖管理和构建工具的核心概念,包括配置本地仓库、Maven指令、生命周期管理、POM项目对象模型、文件目录结构、GAVP属性、依赖作用范围、冲突解决策略以及Maven工程的继承和聚合。此外,还提到了maven私服的使用和war包打包的相关问题。
摘要由CSDN通过智能技术生成

知识整理详细版见于尚硅谷最新maven课程

1、maven是一个依赖管理工具

  1. 管理jar包规模
  2. jar包来源(涉及到maven私服的知识)
  3. jar包导入
    在这里插入图片描述
    在web工程中,jar包必须存放在指定位置

在使用Maven之后,通过配置依赖(jar包)的坐标,查找本地仓库中相应jar包,若本地仓库没有,则统一从镜像网站或中央仓库中下载

  1. jar包之间的依赖

2、maven是一个构建工具

项目构建是指将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库的过程。

3、配置本地maven

  1. 下载maven
  2. 配置环境变量和本地仓库位置
  3. 更改conf——setting.xml文件,包括三方面:mirror镜像,提高下载速度;jdk编译版本; 本地仓库localRepository位置

4、maven指令及效果

名称指令作用效果其他1其他2
清理clean清理编译或打包后的项目结构
编译compile生成字节码文件.java->.class生成target文件,同main文件列于src目录下
打包package生成jar/war包保存在target目录下
安装install打包后上传到maven本地仓库区别于package单纯打包举例:公共工程jar包需要上传到本地仓库
测试test
部署deploy只打包上传到maven私服仓库
生成站点site

测试:方法名 testxxxx 开头; @Test注解; 类名以Test结尾

测试是打包前的操作,所以打成的war包中无测试文件

5、maven生命周期

  1. 清理
  2. 编译
  3. 测试。执行工程中的测试文件
  4. 报告。记录当前测试结果,保存在target—surefire reports中
  5. 打包
  6. 部署。上传到服务器上

6、POM 项目对象模型

dependency 依赖管理模型
dom 文档对象模型 js中的

7、maven文件目录

  • bin。含有maven的运行脚本,如mvn.cmd

    PS 配置到path系统变量的作用:当前目录下的指令在任何目录下都可用

  • boot。含有plexus-classworlds 类加载器

  • conf。含有maven的核心配置文件

  • lib。含有maven运行时所需要的java类库

  • license、notice、readme.txt。针对maven版本,简要介绍第3方软件等

8、GAVP属性

为maven仓库做标识,类似姓名

  1. groupId。组织id。org/com-公司线-业务线-子业务线。最多四级。

  2. artifactId。模块id。产品线名-模块名。比如,gulimall-order订单模块

  3. version。版本。主版本.次版本(功能调整).修订号(bug修复)。relaese表示正式版,snapshot表示快照,临时版。比如,3.8.8

  4. packaging。打包方式

    - jar:普通java项目
    - war:web工程
    
    • pom:父工程。不会打包,用来做继承的父工程。

9、普通java工程转换为web工程的方法

方法一:pom.xml打包方式写为war,或者项目结构中新建web模块,得资源路径
在项目结构那,找到合适的位置,新建web.xml文件,路径写为/src/main/webapp/WEB-INF
参照下面的资源路径
方法二:安装插件JBLJavaToWeb
工程右键,找到JBLJavaToWeb选项,点击ok
webapp目录要有蓝色小圆点,否则创建未成功,只是普通目录
方法三:新建工程时,maven archetype 骨架,选择web app。模块。只是版本低1.0.0,其他是4.0.0

运行/调试配置—选择本地tomcat—更新时执行Reploy重新部署—on frame deactivation失去焦点时:更新类和资源

10、maven项目结构

11、war包打包插件和jdk版本不匹配

pom.xml中增加maven-war-plugin

12、maven依赖下载失败

清楚缓存

maven本地仓库下根据坐标找到 lastupdated 结尾的文件,删去

13、指定打包文件

比如,打包文件命名

正常是resources下的xml文件,现要求包括src.main.java下

14、提问:tomcat和maven的区别?

看完视频讲解,tomcat是容器,maven是工具
搜到别人相关面试题

15、如何理解,进行构建时,用到了maven插件

在这里插入图片描述

16、依赖作用范围

编译环境(main)、测试环境(test)、运行环境(war包中是否可用)

不建议手动再修改,参照官网

  • complile。编译依赖范围,scope的缺省值,以上三种环境均可用,如log4j

  • test。测试依赖范围,只在测试环境、测试classpath下可用。如junit

  • provided。已提供依赖范围,只对编译/测试classpath有效。运行无需提供,服务器依赖的jar包已有。如servlet-api

  • runtime。运行依赖范围,只有测试/运行classpath有效

  • system。系统依赖范围,与provided使用一致,不推荐使用

  • import。导入依赖范围,与dependencyManagement元素配合使用(父工程)

只有compile下的依赖才能传递,其他情况下都不能

标签dependency下的 <optional>true</optional>终止依赖传递

17、依赖冲突

自动选择原则

  1. 第一原则,短路优先原则

    A–>B–>C–>D–>E–>X(version 0.0.1)

    A–>E–>X(version 0.0.2) ✌️

  2. 第二原则,路径长度相同时,则先声明优先

手动排除

<dependency>标签下写上<exclusions><exclusion>。。。。。。</exclusion></exclusions>

18、maven工程继承

父工程

<packging>pom</packging><dependencyManagment>(子工程中只用写groupId和atifactId,版本号由父工程决定)
代替<dependencies>(父工程无条件继承依赖)

子工程

使用parent标签指定当前工程的父工程

<parent><groupId>父工程的坐标<artifactId>

在这里插入图片描述

谷粒商城的例子:

common模块,继承和聚合不能同时存在

在这里插入图片描述

18、maven工程聚合

<modules>标签,不是工程名,而是路径,如…/maven_A

谷粒商城的其他例子

在这里插入图片描述

19、maven私服

用来代理外部的远程仓库,如Nexus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值