Maven从入门到精通(三)
我们已经了解了Maven的环境搭建以及POM的主要标签及作用,接下来我们要讲解一下Maven的仓库以及jar下载的一个过程
首先我们要明白仓库及以下一些概念
1、仓库:
在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
Maven核心程序仅仅定义了自动化构建项目的生命周期,但具体的构建工作是由特定的构件完成的。而且为了提高构建的效率和构件复用,maven把所有的构件统一存储在某一个位置,这个位置就叫做仓库。
2、仓库的分类:
根据仓库存储的位置,把仓库分为本地仓库和远程仓库。远程仓库分为远程中央仓库、中央仓库的镜像以及私服。
话不多说,先上一张网上的Maven仓库图
Maven我们添加相关依赖后,首先去本地仓库查找相关依赖,那么我们本地仓库地址在哪里呢?
我们的本地仓库配置就在我们maven的安装目录下 conf ----settings.xml 仓库默认地址
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository>
默认在根盘符下
我们可以修改仓库的地址,当然不修改也是可以的,只是放在C盘个人始终感觉别扭.
我们已经知道本地仓库的地址所在了,本地仓库里面是我们项目所依赖的jar包,全部会在本地仓库备份
因为maven的官方中央仓库因为在国外,所以我们下载依赖构建速度比较慢,推荐使用国内架设的远程仓库,下面列举一下常用仓库地址
3、常用的远程仓库:
<!--中央仓库--> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url>
<!--maven官方运维的2号仓库--> <id>repo2</id> <name>Mirror from Maven Repo2</name>
<url>http://repo2.maven.org/maven2/</url>
<!--阿里云的远程仓库--> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--maven在UK架设的仓库--> <id>ui</id> <name>Mirror from UK</name> <url>http://uk.maven.org/maven2/</url> <!--JBoss的仓库--> <id>jboss-public-repository-group</id> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url>
4、使用profile配置远程仓库:
<profile> <id>dev</id> <repositories> <repository> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories> </profile> <activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles>
5、镜像:用来覆盖一个远程库、或者使所有的POM都使用唯一的一个远程库,可以使用settings.xml中的mirror配置。
<!--覆盖maven自带的中央仓库-->
<mirror> <id>UK</id> <name>UK Central</name> <url>http://uk.maven.org/maven2</url> <mirrorOf>central</mirrorOf> </mirror> <!--配置所有仓库的镜像--> <mirror> <id>UK</id> <name>UK Central</name> <url>http://uk.maven.org/maven2</url> <mirrorOf>*</mirrorOf> </mirror>
maven对仓库的选择:
在Maven构建项目的过程中如果需要某些构件,首先会到Maven的本地仓库中查找,如果找到则可以直接使用;如果找不到,它会自动连接外网,到远程中央仓库中查找;如果远程仓库中能找到,则先把所需要的插件下载到本地仓库,然后再使用,并且下次再用到相同的插件就可以直接使用本地仓库的;如果没有外网或者远程仓库中也找不到,则构建失败。
下一章我们将会介绍Maven核心命令及相关作用,敬请期待!