Maven简介
Maven概念
Maven是java平台下的一款项目构建和依赖的管理工具,maven通过使用配置文件的方式,使得在项目管理和交接方面成本变得很低。maven提出了一个仓库的概念,我们可以把第三方或者需要引用的项目,放在maven仓库中,当任何人需要使用时,可以通过配置文件,直接连仓库进行使用,这样就降低使用成本提高使用效率。
Maven前提
使用Maven,前提是需要创建Maven结构的工程
javase工程结构
src
lib
jar
javeweb结构
src
包/类/配置
web
WEB-INF
web.xml
lib
静态资源
Maven结构工程目录
src
main --源码存储,将来打包的目录
java --java源代码,包/接口/类
resources --配置文件
webapp --类似web项目下的WEB-INF目录,包括静态资源存储
test --测试目录
java --测试类
resources --测试配置
pom.xml --maven核心配置文件,所有依赖都放在该配置文件中
Maven的作用
管理依赖
管理项目生命周期
管理聚合模块
Maven的优点
- Maven适合管理大型项目(聚合工程)
一个大型的聚合工程项目,不适合用package来划分模块,使用maven就可以将一个项目划分为多个工程,以模块的模式来对象相应项目的开发管理。
- 不需要重复复制依赖jar到每个工程
WEB项目的jar引入,都需要复制到lib项目下,浪费空间,使项目臃肿。
Maven项目,是将jar包保存在maven仓库中,项目工程按需通过配置文件,引入jar配置信息即可。并且可以解决依赖冲突问题。
- 依赖jar包的自动下载
所有知名框架或第三方工具jar包,都已经按照统一标准规范放在maven中央仓库,我们仅需要按规范配置jar组织ID,项目ID,版本号坐标信息,就可以自动下载jar,无需手动下载。
并且,有依赖关系的jar包,maven也会自动加载导入。
Maven仓库
Maven仓库,其实就是一个存储库,里面存储了项目jar,库jar,插件等,用于maven工程使用。
Maven仓库分为三种:
1.本地仓库
本地仓库是本地计算机存储文件夹位置,存储保持你项目所有依赖jar,插件等。第一次运行maven任何命令时,就会创建。
当运行maven构建时候,maven会将所有依赖,下载到本地仓库,从而项目运行时候不用再次请求远程仓库。
默认情况下,默认仓库是由maven在%USER_HOME%的目录中创建,如果想要覆盖位置,需要在%M2_HOME%\conf中提供的Maven settings.xml中配置新路径。
<settings>
...
<localRepository>D:\Maven\repository</localRepository>
...
</settings>
2.中央仓库
Maven的中央仓库,是由Maven社区提供的存储库,包含大量的常用库。
当maven本地库找不到任何依赖的时候,会使用中央库地址开始检索(http://repo1.maven.org/maven2)
中央库的关键概念:
· 中央库由Maven社区提供
· 不需要配置
· 他需要搜索互联网。
为了浏览中央库的内容,社区提供了一个URLhttps://central.sonatype.com/
开发人员可以在这个URL中检索所有的可用库。
3.远程仓库
远程仓库是为了防止maven中央仓库也找不到对应的依赖时,提供了一个远程仓库的概念Remort Repository,它是由企业或开发人员自己定义的存储库,包括所需要的库和项目。
<profiles>
<profile>
<id>my-private-repo</id>
<repositories>
<repository>
<id>my-repo</id>
<url>***</url>
</repository>
</repositories>
</profile>
</profiles>
4.Maven仓库依赖搜索顺序
首先在本地仓库搜索依赖关系,如果没有,则请求中央仓库进行搜索,如果还没有找到依赖,则会通过配置文件进行判断是否有远程仓库,如果有则请求远程仓库,没有则停止处理并抛出错误。
Maven坐标
maven的坐标是由三个向量组成,通过坐标定位到仓库中的一个jar包。(由大到小精确)
groupId:公司或组织ID
artifactId:项目或项目模块的ID
version:版本号
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>1.0-SNAPSHOT</version>
标签:maven,依赖,项目管理,jar,Maven,仓库,概述,-- From: https://blog.csdn.net/f135917h/article/details/143769690SNAPSHOT代表快照版本,正在迭代中,不稳定版本
RELEASE代表正式版本