当前位置: 首页 > news >正文

Maven基础

Maven简介

传统项目:
jar包不统一 不兼容

项目中有部分jar包会升级 没升级的部分会起冲突 管理复杂

Maven本质是一个项目管理工具


pom

POM Project Object Model 项目对象模型
项目对象形式进行管理
先写 pom.xml 的配置文件 代表一个项目

1个项目对应1个pom.xml文件
8个项目对应8个pom.xml文件


dependency

pom使用 依赖管理dependency

本地仓库
保存公共信息
👇
私服仓库
👇
中央仓库

依赖管理的东西都来自中央仓库


Build lifecycle & phases

项目构建
构建生命周期 又叫构建阶段 通过Maven插件实现构建操作
一个构建过程包含若干插件
一个插件对应若干构建过程


插件

插件给的结果可能是jar包 也可能是源代码、帮助文档、war包、xml等
多个插件做不同的任务 产出不同的产物


Maven的作用
项目构建:标准的 跨平台的 自动化的项目构建方式
依赖管理:方便快捷得管理项目依赖的资源(jar包),避免资源间的版本冲突问题
统一开发结构:提供标准的、统一的项目结构


下载与安装

官方网站 https://maven.apache.org/download.cgi
请添加图片描述

请添加图片描述

Maven环境变量配置

依赖Java 需要配置JAVA_HOME
设置MAVEN自身运行环境 需要配置MAVEN_HOME

//配置仓库位置
请添加图片描述
settings.xml中
//本地仓库位置
在这里插入图片描述
//配置镜像仓库
在这里插入图片描述
全局setting与用户setting
公共配置
用户配置
在这里插入图片描述
在这里插入图片描述

第一个Maven项目(手工)
pom.xml文件格式

<?xml version="1.0" encoding="UTF-8"?>
<projectxsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><modelVersion>4.0.0</modelVersion><groupId></groupId><artifactId></artifactId><version></version><packaging></packaging>
</project>

compile时生成target文件
clean时删除target

idea创建Maven工程

依赖传递
依赖具有传递性
直接依赖
间接依赖

依赖冲突
路径优先 层级越浅 优先级越高
声明优先 相同层级 配置顺序靠前覆盖靠后的
特殊优先 同级配置相同资源

请添加图片描述
可选依赖
控制别人能不能看到自己

<dependency>
<optional>true</optional>//为true时 被依赖时 不被知道我依赖了这个项目(有点类似私有) 但是只能可选自己项目的 子项目的依赖不能可选化 有此需求时 **排除依赖**
</dependency>

排除依赖
主动断开以来资源 被排除的资源无需指定版本
即自己的项目的子项目有不想要的依赖 使用排除依赖排除
控制自己不看别人

<dependency>
<exclusions>
<exclusion>
///要排除的坐标
</exclusion>
</exclusions>
</dependency>

依赖范围
主程序范围有效(main 范围内)
测试程序范围有效(test文件夹范围内)
是否参与打包(package指定范围内)

scope主代码测试代码打包(上线编程)范例
compile(默认)YYYlog4j
testYjunit
providedYYservlet-api
runtimeYjdbc

依赖范围具有传递性

生命周期
clean:清理工作
default:核心工作 例如编译测试打包部署等
site:产生报告 发布站点等

clean
pre-clean
clean
post-clean

default
compile test-compile test package install等

site
pre-site
site
post-site
site-deploy

插件
插件与生命周期内的阶段绑定 执行到生命周期的阶段时 其实就是执行插件
默认maven会设定预设功能
通过插件可以自定义其他功能

生命周期 :是几岁
插件:那一岁的时候干了什么事

http://www.lryc.cn/news/6589.html

相关文章:

  • C++入门:初识类和对象
  • BERT在CNN上也能用?看看这篇ICLR Spotlight论文丨已开源
  • 【MFC】模拟采集系统——界面设计(17)
  • 锐捷(十五)mpls vxn跨域optionc场景
  • 2023备战金三银四,Python自动化软件测试面试宝典合集(七)
  • redis 主从复制
  • 如何用Redis实现延迟队列
  • 项目文件相关总结
  • ZooKeeper集群搭建步骤
  • 网际协议IP
  • Python 语言参考手册、教程、标准库
  • 数据库连接池 BoneCP、HikariCP 等
  • 博客系统 SSM 超强硬核良心推荐之第一弹 - 预备工作
  • [Web] 简单瀑布流布局实现
  • 多线程之死锁,哲学家就餐问题的实现
  • UTF-8编码
  • likeshop单商户SaaS版V1.8.2说明!
  • 算法训练营 day46 动态规划 最后一块石头的重量 II 目标和 一和零
  • nginx-host绕过实例复现
  • Java学习记录day9
  • ActiveReports.NET 17.0 Crack by Xacker
  • 【计算机网络】传输层TCP协议
  • Mysql5.7安装【Windows版】
  • 分布式一致性算法Raft原理图释
  • 网络安全-字典生成-crunch
  • 闪光桐人の实习日记
  • PostgreSQL 常见配置参数
  • JAVA 常用类型之String结构
  • 二三层网络设备封装与解封装原理
  • 9、MyBatis框架——使用注解开发实现数据库增删改查操作、一级缓存、二级缓存、MyBatis实现分页