1. maven私服的介绍:
maven仓库分为两大类:1. 本地仓库,2.远程仓库,在远程仓库中又分为3种:中央仓库、私服、其他公共库。
maven私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的maven用户使用。当maven需要下载构建的时候,它从私服请求,如果私服上不存在该构建,则从外部的远程仓库下载,缓存在私服上字后,再为maven的下载请求提供服务。我们还可以把一些无法从外部仓库下载到的构建上传到私服上。
maven私服的特性:
(1)节省自己的外网带宽:减少重复请求造成的外网带宽消耗;
(2)加速maven构建:如果项目配置了很多外部远程仓库(非私服)的时候,构建速度就会大大降低,因为所有的jar包都需要从这些远程仓库再下载;
(3)部署第三方构建:有些构建无法从外部仓库获得的时候,我们可以把这些构建部署到内部仓库(私服)中,供maven项目使用;
(4)提高稳定性,增强控制:网络不稳定的时候,maven构建也会变得不稳定,一些私服软件还提供了其他功能;
(5)降低中央仓库的负荷:maven中央仓库被请求的数量是巨大的,配置私服可以大大降低中央仓库的压力,程序请求jar包可以直接从私服中获取,而不是远程中央仓库。
2. nexus私服仓库介绍:
nexus进入后,可以看见如上界面,browse中就是所有的仓库目录。
type表示了仓库的类别:proxy、hosted、group。
proxy:代理的远程仓库,如:阿里云等;
hosted:是指本地或者内部项目仓库;
group:仓库组,包含其他的几个仓库。
3. 创建仓库:
按照上图选择自己要创建的仓库,创建完成后就可以在页面的repository中查看到自己创建的仓库。
4. 从私服上下载自己想要的jar包:
如果只是本项目需要从私服上下载jar包,那么就只是修改当前项目的pom文件就可;如果是针对所有的项目,则需要修改本地的maven的配置文件settings。
4.1 针对settings的配置:
(1)配置server:
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
(2)配置mirror:
<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
注意: mirroOf标签要设置为central,表示所有对中央仓库的请求都会走url的地址。不能配置为*,如果为*,则所有的请求都会走url地址,无法获取到jar包。
url是要对应私服上仓库的镜像。在仓库后的copy可以直接获取:
因为要获取的包可能位于不同的仓库,所以可以直接配置group仓库,这样就能从多个仓库下获取jar包。
关于group仓库中的配置如下:
这里的members包括了group中可以用的仓库。
(3)配置模板
<profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <url>http://xxxx:8081/repository/maven-public/</url> <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases> <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <url>http://xxxxx:8081/repository/maven-public/</url> <releases><enabled>true</enabled><updatePolicy>always</updatePolicy> </releases> <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy> </snapshots> </pluginRepository> </pluginRepositories> </profile> 这里的updatePolicy标签要进行配置为true,每次maven的配置修改后,都会进行同步更新。
模板的url就是nexu中group的地址。模板的id为nexus,下面进行模板激活,就会对应该id。
(4)激活模板:
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
这里的activeProfile标签配置的就是要激活的模板的id。
4.2 项目中pom文件的配置:
找到要下载的jar包的依赖地址,可以从私服获取:
然后在pom中进行配置:
之后从私服进行下载,就能下载到项目中:
5. 上传本地jar包到私服:
5.1 配置settings:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>5.2 在要上传的项目的pom中添加配置:
这里的<repository>和<snapshotRepository>标签中url的地址,可以从仓库地址通过copy获取:
5.3 执行deploy命令,将jar包发布到私服。
6. 手动上传单个jar包到仓库,这里上传的一般都是hosted类的仓库,即自己创建的仓库。
7. 给私服配置代理
虽然搭建了私服,但是如果私服中没有我们需要的jar包,还是会去中央仓库下载,这时速度同样会非常慢,我们就需要在nexus中添加阿里的代理服务器: