maven是什么?
Maven是一个跨平台的项目管理工具,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
- 依赖管理,根据坐标从仓库中寻找构件。
- 构建(build)工具,maven抽象了构建生命周期并为绝大部分构建任务提供了已实现的插件。
- 项目信息管理
一、仓库
maven根据
坐标
寻找构件流程
当maven根据坐标寻找构件时,首先会去本地仓库查看是否存在该构件,若本地仓库已经存在该构件,则直接使用;若本地仓库不存在该构件,则需要去远程仓库查找此构件,在远程仓库中查找到该构件后,需要将其下载到本地仓库后再使用。如果本地仓库和远程仓库都没有该构件,则maven会报错。
坐标:groupId, artifactId, version三个元素定义了一个项目的基本坐标
<groupId>com.example</groupId>
<artifactId>hello-spring-boot-starter-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
构件:jar包等
1. 本地仓库
安装maven后,在不执行任何maven命令前,不存在本地仓库目录。当用户执行第一条maven命令后,会在用户目录下.m2/repository/创建本地仓库。
若希望自定义本地仓库目录,可以在pom.xml中进行如下配置。
<settings>
<localRepository>D://install//localres</localRepository>
</settings>
2. 远程仓库
中央仓库是maven默认的远程仓库,maven的安装文件中自带了中央仓库的配置,其id为centeral。
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,它代理广域网上的远程仓库,为局域网内的maven用户提供服务。当maven下载构件时,先去私服上查找该构件,若私服上没有该构件,则从远程仓库下载构件缓存至私服,再为maven用户的下载请求提供服务。
若希望配置远程仓库,可以在pom.xml中进行如下配置。
<repositories>
<repository>
<id>central</id>
<name>libs-releases</name>
<url></url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>snapshots</id>
<name>libs-snapshots</name>
<url></url>
<snapshots />
</repository>
</repositories>
大部分远程仓库无需认证即可访问,但有时出于安全考虑,我们需要认证信息才能访问一些远程仓库。可以在pom.xml中进行如下配置来配置仓库认证信息。
<servers>
<server>
<id></id>
<username></username>
<password></password>
</server>
</servers>
3. 镜像
如果仓库X能够提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。
在pom.xml中进行如下配置,可以使用阿里云镜像代替中央仓库。
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
二、生命周期和插件
阶段 | 处理 | 描述 |
---|---|---|
验证 validate | 验证项目 | 验证项目是否正确且所有必须信息是可用的 |
编译 compile | 执行编译 | 源代码编译在此阶段完成 |
测试 Test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试。 |
包装 package | 打包 | 创建JAR/WAR包如在 pom.xml 中定义提及的包 |
检查 verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
安装 install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
部署 deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
- package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库;
- install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库;
- deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库;
Maven 有以下三个标准的生命周期:
- clean:项目清理的处理
- default(或 build):项目部署的处理
- site:项目站点文档创建的处理
网友评论