maven是什么
maven翻译为“专家”,“内行”。Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。当前使用Maven的项目在持续增长。
什么是项目构建
项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程
传统项目构建过程
构建过程如下:
1)在IDEA中创建一个java web工程
2)在工程中编写源代码及配置文件等
3)对源代码进行编译,java文件编译成class文件
4)执行Junit单元测试
5)将工程打成war包部署至tomcat运行
使用maven的好处
通过上边介绍传统项目和maven项目在项目构建及依赖管理方面的区域,maven有如下的好处:
1、一步构建
maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。
2、依赖管理
maven工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错。
3、maven的跨平台,可在window、linux上使用。
4、maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构建项目。
Maven的下载使用
Maven的下载
从该网站 http://maven.apache.org/download.cgi 下载
安装-解压即可 注意不要解压在中文路径下
下面是解压后的目录
配置Maven
在环境变量中 新建变量名MAVEN_HOME 值为Maven的安装路径
然后在PATH中引用你的MAVAEN_HOME 如下图
6 查看是否配置成功可在黑窗口中输入 mvn –v 出现如下图所示说明配置成功
如果有时出现不是内部或外部命令,可以用管理员身份打开黑窗口。
maven仓库
maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
下图描述了maven中仓库的类型:
本地仓库 :用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找
默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用户目录。需要注意的是刚开始在.m2/下边是没有这个repository/文件夹的,当我们在命令行中运行mvn命令后才会出现该文件夹,并且在该文件夹下存储我们从远程仓库下载的构件。
既然Maven默认在/.m2/repository/下存储依赖和构件,那么我们是不是可以改变自定义这个位置?
答案是肯定的,注意看图中的/.m2/settings.xml 该文件是maven的配置文件,我们可以在该文件中通过标签<localRepository></localRepository>来配置本地仓库的位置。(settings.xml文件是啥?其作用是啥?我们需要如何配置将在下边详细讲解)
远程仓库:如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。
远程仓库可以在互联网内也可以在局域网内。
中央仓库 :在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。
配置本地仓库
在任意盘符下新建一个目录作为仓库
然后在Maven的安装目录下找到conf目录下的settings.xml配置文件,
打开此文件配置本地仓库的路径
下面是我的本地仓库
本地仓库目录建好后 打开 settings.xml文件进行配置本地仓库
<localRepository>D:\my_maven_local_repository</localRepository>
远程仓库
远程仓库又分为中央仓库,私服以及其它公共库,我们也借用一幅图来阐述它们之间的关系。
由图中可以看出,我们Maven用户是在和私服打交道,包括上传和下载构件,当私服满足不了我们的下载构件需求时,私服会和中央仓库或者其余公共仓库交互,将用户需要的构件缓存在私服仓库中。那么何为私服?
私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。
局域网使用搭建maven私服的好处:
1.节省外网带宽:减少重复请求造成的外网带宽消耗,将大部分构件缓存在私服,用户和私服的交互走局域网。
2.加速Maven构件:如果项目配置了很多外部远程仓库的时候,构建速度就会大大降低,因为外网下载速度很慢。
3.部署第三方构件:有些构件无法从外部仓库获得的时候,可以把这些构件部署到内部仓库(私服)中,供内部maven项目使用。
4.提高稳定性:避免当外网不稳定的时候,maven构建也变的不稳定的情况。
5.增强控制:在公司内部可以访问私服可以通过配置用户名和密码来增强权限控制。
5.降低中央仓库的负荷:maven中央仓库被请求的数量是巨大的,配置私服也可以大大降低中央仓库的压力
中央仓库
Maven提供了一个中央仓库,其地址为:http://repo.maven.apache.org/maven2 ,该仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。据统计,每个月中央仓库大概会接受全世界Java程序员大概1亿次访问,其重要性不言而喻。
- 远程仓库
中央仓库:Maven的默认的远程仓库(http://repo1.maven.org/maven2)
配置setting文件里面
<profile>
<id>central</id>
<repositories>
<repository>
<id>Central</id>
<name>Central</name>
<url>http://repo1.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
私服:是一种特殊的远程仓库,它是架设在局域网内的仓库(怎么搭建私服 --了解)
如果公司里面有,只需要配置公司私服地址 找到对应的jar包
<profile>
<id>localRepository</id>
<repositories>
<repository>
<id>myRepository</id>
<name>myRepository</name>
<url>http://192.168.1.1:8081/nexus/content/repositories/myRepository/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
镜像:用来替代中央仓库,速度一般比中央仓库快(百度 csdn,oschina,阿里云)
配置:(掌握)
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
总结
这篇文章我们简单了解了maven的仓库,以及如何配置远程仓库,包括私服镜像和远程仓库的认证等知识点。当我们真正入职某一家公司的时候,我想很重要的一件事就是对着身边的一个哥们说:“Hi,老哥,把你的settings文件给我一份呗”