Maven可以允许在多个地方配置仓库的位置,比如pom文件、Maven配置文件等。当需要加载一个新的Jar包时,Maven会从配置文件中读取仓库位置,并按照优先级逐一从仓库中判断是否有指定的依赖文件,如果有,则加载,如果没有,则继续搜索。经过实验,得知了其加载顺序。
1、本地仓库 2、maven settings profile中的repository; 3、pom.xml中profile中定义的repository; 4、pom.xml中的repositorys(定义多个repository,按定义顺序找); 5、mirror
下载:https://help.sonatype.com/repomanager3/download
安装
配置完成后,打开cmd,进入nexus-3.14.0-04-win64\nexus-3.14.0-04\bin下。
执行:nexus.exe /run
最后经过一大轮的日志打印,最后出现如下界面,说明nexus私服已经搭建好了
启动成功后,默认用户名admin 密码:admin123
端口:默认8081
废话不多说,访问路径:127.0.0.1:8081/
component name的一些说明: - maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar - maven-releases:私库发行版jar - maven-snapshots:私库快照(调试版本)jar - maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
component type的一些说明: - hosted:类型的仓库,内部项目的发布仓库 - releases:内部的模块中release模块的发布仓库 - snapshots:发布内部的SNAPSHOT模块的仓库 - 3rd party:第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去 - proxy:类型的仓库,从远程中央仓库中寻找数据的仓库
第一步: 需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户和密码 。
此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
第二步: 配置项目pom.xml
配置私服仓库的地址,本公司的自己的jar包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库.
<distributionManagement>
<repository>
<id>releases</id>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意:pom.xml这里<id> 和 settings.xml 配置 <id> 对应!,url直接如下图复制.
第三步:deploy 发布到服务器
第一步 修改settings.xml.
1、 配置mirror.除了配置自己的镜像外,配置一些其他的国内镜像可以下载速度.
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</mirror>
<mirror>
<!--This sends everything else to /public -->
<id>ali</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
</mirror>
<mirror>
<id>ui</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>osc</id>
<mirrorOf>central</mirrorOf>
<url>;
</mirror>
<mirror>
<id>osc_thirdparty</id>
<mirrorOf>thirdparty</mirrorOf>
<url>;
</mirror>
</mirrors>
2、 配置profile ,激活
<profiles>
<!--profile的id-->
<profile>
<id>prd</id>
<repositories>
<repository>
<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
<id>nexus</id>
<!--仓库地址,即nexus仓库组的地址-->
<url>http://127.0.0.1:8081/repository/maven-public/</url>
<!--是否下载releases构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<!--this profile will allow snapshots to be searched when activated-->
<id>dev</id>
<repositories>
<repository>
<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
<id>snapshots</id>
<!--仓库地址,即nexus仓库组的地址-->
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
<!--是否下载releases构件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>snapshots</id>
<name>Public Repositories</name>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile>
<activeProfile>prd</activeProfile>
</activeProfiles>
之前本地没有jar 去中央仓库下载,将所有路径* 映射到私服上,都去私服下载
将所有中央操作访问,都映射到私服 ,激活配置 !
,不用私服,将settings.xml 私服配置注释掉!!!
第二步 删除本地仓库中的jar
第三步 update 工程,会去私服下载jar.
参考:
setting.xml 配置详解:
maven配置setting.xml文件、POM.xml详解: