一、基础知识:
1.定义:
Maven 是一个项目管理工具,它包含了:
一个项目对象模型 (POM:Project Object Model),
一组标准集合,
一个项目生命周期(Project Lifecycle),
一个依赖管理系统(Dependency Management System),
用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑
2.作用:
1.依赖管理----{meavn工程对第三方jar包管理过程}
2.项目构建----{源代码的编译,web工程的部署等}
3.meavn的下载与安装
1.下载:到meavn官网进行meavn的下载:http://archive.apache.org/dist/maven/maven-3/
2.安装:将下载好的压缩包解压到指定文件夹就行
4.meavn的主要目录结构{
bin{mvn目录(构建项目)}
boot{maven自身运行所需要的类加载器}
conf{settings.xml(主要使用的配置文件)}
lib{meavn自身运行所依赖的jar包,包含tomcat插件}
}
5.maven环境变量配置
在系统环境变量中添加{
键1:MAVEN_HOME
值1:maven的路径
在path环境变量中添加:%MAVEN_HOME%\bin
}
测试maven是否配置成功:
在cmd下输入:
mvn -v
6.maven仓库的种类以及各种仓库之间的关系
maven仓库用于存储各类开源jar包。仓库的分类如下:
本地仓库->远程仓库【私服】->镜像->中央仓库
tip1:整个项目的组成部分{
核心代码;配置文件
测试代码;测试配置文件
}
7.maven项目标准目录结构{
src/main/java目录:核心代码部分
src/main/resouces:配置文件部分
src/test/java:测试代码部分
src/test/resources:测试配置文件
src/main/webapp:页面资源:js、css和html
}
8.maven中的构建命令与生命周期{
1、清除编译信息(清理生命周期,是独立生命周期):
删除以前的编译结果,为重新编译做好准备
mvn clean:删除target目录,即删除项目中含有差异的编译代码
2、执行编译(2-6这个整体是一套生命周期,为默认生命周期):
将java源程序编译为字节码文件
mvn compile:将src/main目录下的所有java代码进行编译
3、测试:
针对项目中关键点进行测试,确保项目在迭代开发过程中关键点的正确性
mvn test:编译src/目录下所有java代码
(报告:每次测试后以标准格式记录和展示测试结果)
4、打包:
将一个包含诸多文件的工程封装为一个压缩包用于安装或部署,Java工程对应jar包,web工程对应war包
mvn package:编译src/目录下所有java代码并且将项目进行打包
5、安装:
在Maven环境下特指打包的结果jar包或war包安装到本地仓库中
mvn install:编译src/目录下所有java代码并且将项目进行打包,并且将打包项目上传到了本地仓库
6、发布:
将打包的结果部署到远程仓库或将war包部署到服务器上运行
mvn deploy
注:在maven中还有一套站点生命周期,在开发中不常用
}
9.maven概念模型图{
POM(项目对象模型)->pom.xml->包含信息{
项目自身信息封装为便于管理的对象;
项目运行所依赖的jar包信息;
运行环境信息(如jdk,tomcat信息)
}
依赖管理模型(由POM的项目运行所依赖的jar包信息独立出来的)->{
存放jar包坐标
jar包坐标实例
<dependency>
<groupId>mysql</groupId>-----公司/组织名称
<artifactId>mysql-connector-java</artifactId>----项目名称
<version>5.1.47</version>----版本号
</dependency>
}
构建生命周期{一键构建}{
默认生命周期{
compile;test;package;install;deploy
每一个构建项目的命令都对应了maven底层一个插件
}
}
POM文件内容概述{
POM主体
<!-- xml声明-->
<?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">
<!-- 模型版本-->
<modelVersion>4.0.0</modelVersion>
<!--
坐标{用于寻找jar包}:用于生成路径:g+a+v/a-v.jar
即:组织id+模块id+版本号/模块id-版本号.jar
则从仓库中按照{组织id/模块id/版本号/模块id-版本号.jar}这个路径进行jar包寻找
-->
<groupId>组织id</groupId>
<artifactId>模块id</artifactId>
<version>版本号</version>
<!-- 项目名称-->
<name>WmavenDay01</name>
<!-- 依赖的包-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- 包的使用范围-->
<scope>test</scope>
</dependency>
</dependencies>
</project>
}
}
10.依赖管理{
依赖:
当A.jar需要用到B.jar中的类时,就称A对B有依赖。jar包中的依赖存在直接依赖和间接依赖
当maven工程添加了对某个jar包的依赖后,可以将此依赖的范围限制在{
compile{用于编译(src)、测试(test)和部署(jar包要随项目放到服务器中)}
test{用于测试(test)}
provided{用于编译(src)和测试(test)}
runtime{用于测试(test)和部署(jar包要随项目放到服务器中)}
}
依赖传递性:
A->B,B->C => A-(间接)->C 则C中只有compile范围的依赖对A可见。
依赖原则(解决jar包冲突):最短路径者优先;路径相同时先声明者优先
依赖排除
<exclusions>
<exclusion>
排除的jar包的g和a向量
</exclusion>
</exclusions>
利用<properties>和自定义标签{定义框架的版本号,可以通过${}SpringEL表达式语言来获取这个标签值}来同一框架版本号。
}
二、将maven插件集成到idea中
1、检查个人电脑内的maven是否安装与配置:
cmd下输入:mvn -v
2、在idea设置中的"构建,执行,部署"部分选择maven,然后在maven home导向中输入安装好的maven路径,指定maven的settings.xml文件的路径
3、在idea设置中的"构建,执行,部署"部分maven下,选择Runner,在VM Options中输入:
-DarchetypeCatalog=internal
用于防止在没有网络情况下无法在本地找到相关可替代的jar包