本机,一般.m2 本地仓库地址可以在settings.xml里边指定
比如公司私有仓库 pom可以通过配置多个repository来,如果好多项目共用的话,可以在settings文件配置profile,这样新项目就不需要重复配置repository了
maven必须至少知道一个远程仓库,中央仓库就是默认的仓库,不需要显示配置在maven的 super pom中配置的 兜底用的,找不到的jar会找他
如果中央仓库慢可以用mirrors来替换它,它的id是central,在mirrorOf标签中配置它的标签就是替换了
可以在settings OR pom xml中配置 可以嵌入到profile中,也可以单独通过repository配置然后profile通过id引用
profile(构建)标签会指定仓库
通过distributionManagement标签根据id关联起来
依赖优先级关系由近(本地仓库)及远(中央仓库)
强烈注意: 你的maven的环境变量会覆盖一切. 当你发现你修改settings不生效的时候,检查下你的maven home配置
本地仓库jar>global settings active profile> user settings active profile>pom profile>pom repo>user mirror>global mirror
pom中的repo配置高于user/global settings中的mirror
user/global settings中的activa profile高于pom中的repo
global settgings中的active profile高于user settings中的active profile
user settings active profile高于mirror(checked)
但是settings定位不同,它倾向于提供一些公共的附属信息,而不是个性化的构建信息.它会尽量融合到你的pom中.
就是一个备份或冗余.并且你有的我也有并且我比你快 用镜像仓库替代默认的远程仓库
用来替代在pom中repository定义的仓库(miorrorOf标签通过唯一的仓库id) maven的中央仓库id是central(在super pom中配置)
注意:当远程仓库被镜像匹配到的,则在获取 jar 包将从镜像仓库获取,而不是我们配置的 repository 仓库, repository 将失去作用
如果你不是以上两个目的就不用配置镜像了
见repo优先级 pom不支持配置
定义构建程序的资源和配置,如:
- 远程仓库列表
- 构建时本地路径及远程路径
- 唯一标志
- 自动触发逻辑
- 扩展属性列表
- 插件仓库列表
通过profiles/profile标签配置
在settings和pom都可以配置
但是settings只能提供给pom: repository,plugin repository,以及free-form properties供pom使用
可以理解为setting的profile是对pom中的profile信息的补充以达到build的目的
自动触发/激活profile的条件逻辑 不是激活profile的唯一方式,还可以通过命令行-P yourWantedtoActiveProfile,anotherProfiletoActive
可以配置自动激活条件特别多,具体参考文档 mvn help:active-profiles
对profile的扩展,配置一些属性值${x}
注:如果该profile被激活,则可以在pom.xml中使用${user.install}。
远程仓库列表,它是maven用来填充构建系统本地仓库所使用的一组远程仓库。
远程仓库唯一标志/名称 release/snapshots配置 远程仓库url
maven插件的仓库
手动激活profiles的列表,配置的是在pom中配置的profile的id 按照profile被应用的顺序定义activeProfile
不管在哪里配置的profile都记得要激活 pom激活fangshi :
true
settings激活方式:
profile_user_settings
settings.xml中的profile元素是pom.xml中profile元素的裁剪版本 它包含了id、activation、repositories、pluginRepositories和properties元素。 这里的profile元素只包含这五个子元素是因为这只关心构建系统这个整体
如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。 settings的profile一般是个pom的profile提供补充信息, 一般是公共的,适合所有项目的
从settings.xml的文件名就可以看出,它是用来设置maven参数的配置文件。并且, settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置。 Settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。
settings.xml文件一般存在于两个位置: 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: .ℎ/.2/.:
settings偏向于全局配置 一般pom的优先高于settings,但是他们之间的信息是相互引用的
如果需要用户名和密码就需要配置下server,不适合放在pom中,一般定义在settings中,由pom去引用
仓库的下载和部署是在pom.xml文件中的repositories和distributionManagement元素中定义的。
该 id 与 distributionManagement 中 repository 元素的 id 相匹配
profile可以再settings和pom中配置 repository无法单独在settings中配置,不报错不生效,但是可以配置到profile中
profile会用到repository repository也可以单独配置
要看具体标签来定 profile是settings的优先级最高 见repo优先级
一般是pom会取用setttings中的配置 settings一般全局和公共的配置
用来替代某个仓库的,一般替代中央仓库,但是不局限于替代它.可以替代一切仓库 mirrorOf来指定仓库id,这个id是pom文件中 repository 的id
mirrorOf 标签里面放置的是 repository 配置的 id,为了满足一些复杂的需求,Maven还支持更高级的镜像配置
external:* = 不在本地仓库的文件才从该镜像获取
repo,repo1 = 远程仓库 repo 和 repo1 从该镜像获取
*,!repo1 = 所有远程仓库都从该镜像获取,除 repo1 远程仓库以外
* = 所用远程仓库都从该镜像获取
maven的中央仓库id是central, 所以mirrorOf配置为central就达到了替换maven仓库的目的
repository就是jar包的库 mirror可以替换某个repository profile里面需要包含某个repository
aliyun
aliyun
central
https://maven.aliyun.com/repository/central
见repo优先级