一、基础知识:
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>mysqlgroupId>-----公司/组织名称
- <artifactId>mysql-connector-javaartifactId>----项目名称
- <version>5.1.47version>----版本号
- dependency>
}
构建生命周期{一键构建}{
默认生命周期{
compile;test;package;install;deploy
每一个构建项目的命令都对应了maven底层一个插件
}
}
POM文件内容概述{
POM主体
- "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.0modelVersion>
-
-
- <groupId>组织idgroupId>
- <artifactId>模块idartifactId>
- <version>版本号version>
-
-
- <name>WmavenDay01name>
-
-
- <dependencies>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.11version>
-
- <scope>testscope>
- 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>
利用
}
二、将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包
三、常用小工具
一、关于maven中资源无法加载的解决办法之一:
在pom中添加
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- plugin>
- plugins>
- <resources>
- <resource>
- <directory>src/main/javadirectory>
- <includes>
- <include>**/*.ymlinclude>
- <include>**/*.propertiesinclude>
- <include>**/*.xmlinclude>
- includes>
- <filtering>falsefiltering>
- resource>
- <resource>
- <directory>src/main/resourcesdirectory>
- <includes>
- <include>**/*.ymlinclude>
- <include>**/*.propertiesinclude>
- <include>**/*.xmlinclude>
- includes>
- <filtering>falsefiltering>
- resource>
- <resource>
- <directory>libdirectory>
- <includes>
- <include>**/*.jarinclude>
- includes>
- resource>
- resources>
- build>