1.maven私服
1.maven :简单的说就是一个依赖管理的工具。 2.私服就是一个特殊的远程仓库,建立在本地和远程中央仓库之间的一个中间库(中间商),搭建在局域网内,供局域网内的开发人员使用,用来统一管理项目的依赖。 当本地添加新的依赖时,会向私服请求,存在直接下载到本地,如果私服不存在该依赖,会从外部的远程仓库中下载到私服上,再从私服下载到本地使用。
2.maven仓库的分类
maven仓库分为两种:1.本地仓库 2.远程仓库(私服||中央仓库||其他的公共库)
3.项目获取依赖的仓库顺序
1.当项目新增某个依赖时,会在本地仓库查找是否存在,存在则直接引用 2.当本地仓库不存在时,会在远程私服仓库中查找,查看的顺序是根据配置组-成员的优先级(后面会讲到) 3.当本地仓库不存在需要的依赖时,会从最大的中央仓库中下载到私服,然后再下载到本地。
4.Nexus 仓库的分类
Nexus仓库类型有三种:
1.hosted:宿主仓库(服务器本地仓库):通常我们上传自己的依赖到这一类型的仓库,比如公司的第二方库。
2.proxy:代理仓库:它们被用来代理远程的公共仓库,如maven中央仓库
3.group:仓库组:仓库的集合,把多个仓库的依赖都整合到一个大的集合中来;用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
当我们安装好Nexus后,系统会预先自带几个仓库:如图:
下面说说,另外三种仓库的作用:
1.Releases: 这里存放我们自己项目中发布的构建,通常是Release版本的,已经正式发布的。
2.Snapshots:存放临时的依赖,非最终版本、非稳定版本的依赖,比如你正在开发的starter,你的同事需要引用里面的类,就可以发布到这个类型的仓库中。
3.3rd Party:存放第三方的依赖。
5.Nexus的搭建
5.1.基础环境不多说:jdk maven
5.2 安装nexus
需要自取:
链接:百度网盘 请输入提取码
提取码:9i99
1.新建一个目录存放下载的 nexus 安装包 2.解压 tar -zxvf 安装包,会生成两个文件
3.切换到 bin目录下,xxx/nexus-3.28.1-01/bin (也可以配置环境变量)
4.直接启动
./nexus start
启动停止:
5.查看是否启动成功:ps -ef |grep nexus
端口修改 ((端口可以在配置文件中修改 xxx/nexus-3.28.1-01/etc/nexus-default.properties))
6.浏览器访问 http://IP:8081
7.登录
账户:admin
密码:查看
cat xxx/sonatype-work/nexus3/admin.password
8.查看自带仓库
安装完毕!
6.Nexus的基本命令
./nexus status #查看启动状态
./nexus stop #停止
./nexus restart重启
注:使用**./nexus start这种后台启动方式看不到实时日志**;用**./nexus run是实时启动可以看到日志。
7.上传依赖到私服操作
7.1.配置setting文件
1.指定本地仓库的位置
<localRepository>E:\maven-repository</localRepository>
2.配置私服的镜像路径
在settings.xml 文件的 mirrors 内添加以下镜像地址
<mirror>
<id>maven-public</id>
<name>maven-public</name>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
3.配置服务器信息
<!-- 服务器的账户密码配置-->
<servers>
<server>
<!-- id可以随便取 但是在pom中引用的时候需要保持一致-->
<id>maven_release</id>
<username>admin</username>
<password>admin</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
<server>
<id>maven_snapshots</id>
<username>admin</username>
<password>admin</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
<server>
<id>maven-central</id>
<username>admin</username>
<password>admin</password>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
7.2配置项目的pom文件
1.配置pom
需要在pom.xml 中的 project 内添加自动部署构件配置,配置下面的内容:
<distributionManagement><!-- 远程部署管理信息 -->
<!-- 项目部署到私服配置 id和上面server中配置的id一致-->
<repository><!--部署项目产生的构件到远程仓库需要的信息 -->
<id>maven_release</id>
<name>maven-releases</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository><!-- 如果没有配置该元素,默认部署到repository元素配置的仓库 -->
<id>maven_snapshots</id>
<name>maven-snapshots</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
此处配置了一个repository和snapshotRepository,repository是上传到maven-releases,snapshotRepository是上传到maven-snapshots;
这里的id要和server里面的id分别对应上哦,不然就送你401!!!
注意:在项目中配置1.0-SNAPSHOT这样,带有SNAPSHOT的就会到snapshots仓库,如果不加 SNAPSHOT就会到releases仓库;
7.3 执行命令:
mvn clean deploy 命令,即可发布包到私服仓库中。
各参数代表含义为:
举例:
mvn clean deploy -DgroupId=com.bat -DartifactId=admin-17 -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=E:\xubin_xinfo\study\gitStore\ruoyi\java17\target\java17-0.0.1-SNAPSHOT.jar -Durl=http://IP:8081/repository/maven-snapshots/ -DrepositoryId=maven_snapshots --settings E:\xubin_xinfo\study\gitStore\apache-maven-3.6.0\conf\settings.xml
方式二:直接用idea 页面操作
上传成功
8.仓库组配置成员的注意事项 ->避免从私服下载依赖慢的问题
现象:.在操作过程中如果不注意细节会导致从私服下载依赖特别慢
原因:主要是我们在配置仓库组的时候,没有调整组成员的顺序,优先级是从上向下递减的。
例子:
我们拿maven-public举例:(阿里云的镜像仓库,创建方式自行百度)
配置注意:把最大的中央仓库放在最后,其他的组根据项目平时的依赖来源进行调整(一般阿里云放第一,三方库放第二即可)!
注:这只是下载慢的一个原因而已,其他的原因评论区欢迎讨论!