Maven(项目管理工具)

发布时间:2024年01月17日

注:约定大于配置

1. 简介

基于项目对象模型(POM)的概念纯java开发的开源项目管理工具,对java项目进行项目构建和依赖管理

? ? ? ? 1) 项目构建

????????????????编译、测试、运行、打包、安装、部署

? ? ? ? 2) 依赖管理

????????????????传统的web项目,需把所有用到的jar包放到工程里,导致工程很大;maven项目不直接将jar包导入工程,使用pom.xml文件定位jar包坐标,工程去指定存放jar包的仓库(maven仓库),根据坐标找到使用。

2. 仓库

? ? ? ? 1) 存放依赖(jar包)的地方,并且管理着每个依赖唯一的标识(坐标),Java项目凭坐标获取依赖。

? ? ? ? 2) 分类

? ? ? ? ? ? ? ? a. 本地仓库

????????????????????????存储从远程仓库或中央仓库下载的插件和jar包,项目使用优先从本地仓库查找。

? ? ? ? ? ? ? ? b. 远程仓库

????????????????????????本地仓库中没有,默认去远程仓库下载--可以是互联网也可以是局域网(私服)。

? ? ? ? ? ? ? ? c. 中央仓库--https://mvnrepository.com/

????????????????????????maven团队维护,软件中内置的远程仓库,服务于整个互联网。

? ? ? ? 3) 公共仓库

? ? ? ? ? ? ? ? a. 除中央仓库外的其他远程仓库,比如阿里云仓库...(中央仓库在国外,下载速度太慢,在国内配置一个远程仓库代替)。

3. Idea(2023.3.1)-Maven

? ? ? ? 1) 创建maven项目

????????????????

? ? ? ? 2)?项目结构

????????????????

? ? ? ? 3)?创建关联关系

????????????????

? ? ? ? 4) pom.xml配置文件

????????????????project 文件的根节点

????????????????modelVersion 模型版本

????????????????groupId 项目标识

????????????????artifactId 项目名称

????????????????version 项目版本

????????????????packaging 打包类型,jar、war、pom等

????????????????name 项目的显示名

????????????????description 项目描述

????????????????dependencies 项目依赖的坐标

????????????????properties 属性管理

4. 依赖生命周期

????????jar包的使用时间段即生命周期,在pom文件中导入依赖(根据GAV定位)时指定(scope便签),默认为compile依赖范围。

????????????????compile:编译范围,用在编译、测试、运行范围,运行时需要会被打包。

????????????????provided:提供依赖,用在编译、测试范围,运行时不需要不会被打包。

????????????????runtime:运行范围,编译不需要,用在测试、运行范围,运行时需要会被打包。

????????????????test:编译、运行时不需要不会被打包。

5.?maven命令

????????compile:编译,将src/main/java下的文件编译成class文件输出到target目录下。

????????clean:清理,将target目录及内容都删除。

????????package:打包,把工程打成jar包或war包。

????????install:安装,打成的jar包或war包发布到本地仓库。

6. 私服

? ? ? ? 1) 简介

????????????????架设在局域网的特殊的远程仓库;项目请求私服,私服上有直接下载到本地仓库,否则,私服请求外部的远程仓库下载到私服,供本地仓库使用。

? ? ? ? 2) 仓库列表(了解)

????????????????

? ? ? ? 3)?maven中配置私服,通过maven的setting.xml文件关联。

????????????????

? ? ? ? 4)?deploy可将项目部署到私服对应的仓库,通过idea的pom.xml文件关联。

? ? ? ? ? ?????????

7. 分模块开发

? ? ? ? 1) 继承和聚合

????????????????继承是为了消除重复,如果将dao、service、web创建多个工程,则pom文件中内容重复;比如:编译版本,spring版本等;可以将这些重复的配置提取出来在父工程pom文件中配置。

????????????????聚合是为了多个模块同时运行,dao、service、web放在一块运行。

? ? ? ? 2) 解决依赖冲突

????????????????第一声明优先原则:pom文件中,先声明的依赖为准。

????????????????路径近者优先原则:直接依赖级别高于传递依赖。

????????????????排除依赖

????????????????????????

文章来源:https://blog.csdn.net/AngeliaXue/article/details/135605848
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。