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基础_第1张图片

Maven基础_第2张图片

Maven环境变量配置

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

//配置仓库位置
Maven基础_第3张图片
settings.xml中
//本地仓库位置
Maven基础_第4张图片
//配置镜像仓库
Maven基础_第5张图片
全局setting与用户setting
公共配置
用户配置
Maven基础_第6张图片
Maven基础_第7张图片

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


<project
	xsi: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.0modelVersion>
	
	<groupId>groupId>
	<artifactId>artifactId>
	<version>version>
	<packaging>packaging>
project>

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

idea创建Maven工程

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

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

Maven基础_第8张图片
可选依赖
控制别人能不能看到自己

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

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

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

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

scope 主代码 测试代码 打包(上线编程) 范例
compile(默认) Y Y Y log4j
test Y junit
provided Y Y servlet-api
runtime Y jdbc

依赖范围具有传递性

生命周期
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会设定预设功能
通过插件可以自定义其他功能

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

你可能感兴趣的:(基础知识,JavaWeb,java,maven,java,spring)