Maven基础
1Maven介绍
1.1什么是Maven
Maven发音是[ˈmevən](枚文)意思是专家、内行。
Maven的一个比较正式的定义:
Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,
一个项目生命周期(Project Lifecycle),一个依赖管 理系统(Dependency Management System),
和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。
1.2为什么使用Maven
大工程需要引入很多java包,容易遇到jar包和版本冲突问题;
代码完成后,需要写单元测试,一个个运行检查;
需要吧代码、配置文件、资源整合后打包;web项目需要发布到服务器;
Maven是一个能帮我们从上面这些繁琐的工作解放出来的工具。能帮助我们:
构建项目、管理jar包、编译代码、自动运行单元测试(...)、打包、生成报表(...)、部署项目生成web站点。
1.3依赖管理的概念
依赖管理就是管理jar包的过程(Maven的一个核心功能);
传统工程把依赖的jar包复制到项目中,会使工程内存变得很大,Maven创建的工程,就不用担心这个问题。(如下图)
Maven工程中没有存放jar包,取而代之的是在pom.xml文件中加入jar包的坐标(GAV:公司/组织名+项目名+版本号),即添加依赖。
项目用到jar包的时候,通过pom.xml中的坐标(依赖),从仓库(Maven仓库)中找到对应的jar包,然后拿来运行。
补充:因为Maven仓库中建立了索引,所以提高了maven项目根据pom.xml配置文件中的依赖加载jar包的速度(达到了传统项目加载自己jar包一样的速度)
1.4一键构建的概念
构建:项目从编译、测试、运行、打包、安装、到部署的整个过程都交给maven管理。
一键构建:maven将项目构建的过程标准化,每个阶段使用一个命令就可以完成。
Maven的构建过程的阶段,图如下:
例子:mvn tomcat7:run 一键运行Hello-Maven工程
在打开cmd,进入项目根目录,输入mvn tomcat7:run后(也可以进入根目录,shift+右键,之间进入cmd输入命令),然后复制网址,浏览器访问。
2Maven的安装和仓库的种类
2.1安装
去官网下载(http://maven.apache.org/download.cgi)apache-maven-3.6.0-bin.zip。
(Maven 3.3+要求执行JDK 1.7或更高版;Maven使用前提安装了jdk)
这个下载网址也可以http://archive.apache.org/dist/maven/maven-3/
然后解压到没有中文的目录,并且配置环境变量MAVEN_HOME,设置为安装路径。
path添加:%MAVEN_HOME%in
Maven软件结构
bin:存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run
boot:存放了一些 maven 本身的引导程序,如类加载器等
conf:存放了 maven 的一些配置文件,如 setting.xml
文件 lib:存放了 maven 本身运行所需的一些 jar 包
使用mvn -v命令测试安装是否成功
2.2仓库的种类
仓库分三种:本地仓库、远程仓库(私服)和中央仓库;
本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包, 优先从本地仓库查找
默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录
默认本地仓库位置需要修改到显眼的地方。
打开configsetting.xml文件
设置镜像
<mirrors> <!-- 阿里云仓库 --> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <!-- 中央仓库1 --> <mirror> <id>repo1</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo1.maven.org/maven2/</url> </mirror> <!-- 中央仓库2 --> <mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> </mirror>全局
全局setting和用户setting
maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。
在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project 项目,它作为 maven 的全局配置。
如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在:${user.dir} /.m2/settings.xml 目录中,${user.dir} 指 windows 中的用户目录。
maven 会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载(???不是中央仓库吗,需要测试)。 远程仓库可以在互联网内也可以在局域网内。
中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,
服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。
3 Maven标准目录结构和常用命令
Maven目录结构
src/main/java (存放项目的.java 文件)
src/main/resources (存放项目资源文件,如 spring, hibernate 配置文件)
src/test/java (存放所有单元测试.java 文件,如 JUnit 测试类)
src/test/resources ( 测试资源文件)
target (项目输出位置,编译后的 class 文件会输出到此目录)
pom.xml(maven 项目核心配置文件 注意:如果是普通的 java 项目,那么就没有 webapp 目录。)
常用命令:
compile:编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。
(进入Maven项目目录cmd 进入命令状态,执行 mvn compile,其它命令执行类似)
test:测试命令 mvn test,会执行 src/test/java 下的单元测试类
clean:清理命令,执行 clean 会删除 target 目录及内容。
package:对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包。
install:maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
当后面的命令执行时,前面的操作过程也都会自动执行,
4Maven生命周期和概念模型图
三套”相互独立的生命周期“,重点掌握默认生命周期。
概念模型图
5使用骨架创建Maven的java工程
首先在idea中配置maven:
上面配置成功以后,每次创建maven项目还是要选择,解决方法:
ps:如果c盘用户里面那个仓库删除以后等下次运行还会在出来的话,就去你idea的安装路径里找个
名字为plugins的文件夹,里面也有一个maven文件这里面有idea自带的两个maven版本童谣道理找到这两个里面的settings.xml将路径更改一下即可
用骨架创建一个java项目
填写坐标
设置配置信息
设置项目位置
补全文件夹:
不用骨架直接穿件java工程则不需要创建资源文件夹,推荐这种方式。
用骨架创建一个web项目
过程和上面类似,需要创建src下创建java文件夹,make as Sources Root.
6Maven工程servlet实例
mavevn问题:
01idea maven仓库索引更新怎么弄?