在maven使用的过程中,除了POM文件,不得不聊的另一个文件就是settings.xml文件。POM文件针对的是当前项目,描述了单个项目的元数据,需要使用的第三方依赖、编译打包的插件等信息,而settings.xml文件整体概括了所有项目的通性,如它们从哪里下载,下载后的存放位置等信息。
关于POM文件,你可以参考我对maven有话说系列(一)POM文件https://blog.youkuaiyun.com/weixin_38211176/article/details/106609124。
一: 查看settings.xml的文件路径
-
Mac系统:通过Preferences —> Build,Execution,Deployment —> Build Tools -----> Maven面板查看
-
Windows系统:通过Settings ----> Execution,Deployment —> Build Tools -----> Maven面板查看
当你查看面板后,通过User settings file一栏可以查看当前settings.xml文件的位置,顺便带上一嘴,当前使用的maven主目录可以通过Maven home directory查看,下载的第三方依赖的存放路径可以通过Local repository查看。
一图胜千文!
二: 解析settings.xml文件
settings.xml文件,显而易见就是一个xml文件,理解xml文件最重要的就是知道它有哪些元素、各元素的意义。可定义的元素参考http://maven.apache.org/xsd/settings-1.0.0.xsd。
一图胜千文!settings.xml文件中< settings>元素可以定的一级子元素如下:
常用元素的释义大致如下:
【localRepository】
The local repository,也就是依赖下载的本地存放路径。
【servers】
当你使用nexus构建私服时,从私服下载依赖或上传依赖到私服,你都需要配置私服server的相关信息,当前登录的帐号、密码、仓库id。
【mirrors】
在众多的元素里,你对此肯定不陌生,我们通常会添加阿里云的镜像,用以来解决依赖下载不了或下载速度慢等问题。
阿里云镜像配置如下:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
最重要的就是对< mirrorOf> 元素的理解, 其值表示被拦截的仓库信息,将原本的下载路径更换为< url>定义的镜像路径下载。
- = everything
external:* = everything not on the localhost and not file based.
repo,repo1 = repo or repo1
*,!repo1 = everything except repo1
-
< mirrorOf>* < /mirrorOf > ,表示任何依赖的下载都将从< url>定义的镜像路径下载。
-
< mirrorOf>central < /mirrorOf > ,表示原本从maven中央仓库下载的依赖将从< url>定义的镜像路径下载。
下图为settings.xml中各元素的描述,你可以仔细的去了解下每一个元素的作用,了解越多,使用越得心应手。
最后预告一下,下一篇我对maven有话说系列(三)maven生产环境如何正确地做依赖的统一版本管理,敬请期待!