1.为什么要搭建Maven私服
首先来说一下什么是maven私服,maven私服就是一种特殊的远程仓库。通常搭建在局域网内,用于代理外部所有的远程仓库,并且能够接受内部项目的上传和下载。
那么使用maven私服有什么好处?首先可以对整个项目或者多个项目的maven依赖进行统一管理。其次有很多项目的开发都是不能直接访问外网的,无法直接连接maven的中央仓库或者阿里云代理仓库。在内网搭建私服是一个很好的选择。除此之外,搭建私服还有很多好处。比如说减少外网的网络宽带流量、降低中央仓库或阿里云代理仓库的负载等等。
但是,这些都是网上的说法。至于我为什么要选择搭建私服。原因有两个,首先就是,我所负责开发的一个项目,由于历史的种种原因,会有几个中央仓库和阿里云仓库没有的jar包,这些jar包可能是已经开发完毕的子系统,被引用到我当前的这个项目中。所以在我搭建本地项目,或者帮助别人搭建环境的时候,都需要可以的把这几个包手把手发给对方,然后再手动导入。
还有一个原因就是,我在为项目集成Jenkins构建的时候,发现了一个难受的地方。有了解过的小伙伴肯定知道,Jenkins自动化构建部署的大概工作流程就是从指定的git地址,将代码拉取过来,然后打包放在指定的服务器上。因为我这个项目的特殊性,git代码仓库是没有这些包的,仅仅有的是pom.xml中的位置信息。所以在项目打包的过程中,那几个特殊的包无法通过远程仓库进行下载,所以就打包失败,整个构建过程也会因此失败。
所以搭建maven私服,对我而言成为了必要的一步。
2.开始
2.1 下载and解压
我这里使用的是Nexus来搭建maven私服的,安装在CentOS7上面。
下载安装nexus,访问nexus官网。
填写相关信息:
下载下来的压缩包上传到服务器你想指定的目录下,并且解压:
解压之后会生成两个目录,nexus-3.37.3-02(nexus服务目录)、sonatype-work(私有库目录)。
2.2 检查和修改配置
cd nexus-3.37.3-02/etc
cat nexus-default.properties
检查并根据自己的需要进行配置文件的配置,nexus默认启动端口是8081。注意检查各位服务器的8081是否开放哦。
2.3 启动服务
cd nexus-3.37.3-02/bin/
./nexus start
成功启动后可以通过http://ip:8081/ 进行访问:
首次登陆可以在这个目录下查看admin.password,里面有密码。用户名为admin。
2.4 在私服上创建代理仓库指向阿里云仓库
然后在maven-pulic这个仓库里面将新创建的aliyun-proxy加入group中。 因为maven-public是一个group类型,将所有添加进这个group的仓库一起对外提供服务。
3.项目中配置使用私服
在我们的项目中配置相关的配置信息,然后使用的我们的私服。在这里我选择在项目的pom.xml中进行配置。
<profile>
<id>uat</id>
<properties>
<build.env>uat</build.env>
<warName>ROOT</warName>
</properties>
<!-- 引入私服-下载依赖 -->
<repositories>
<repository>
<id>maven-nexus</id>
<name>maven-public</name>
<url>http://私服ip:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 配置私服下载插件 -->
<pluginRepositories>
<pluginRepository>
<id>maven-nexus</id>
<name>maven-public</name>
<url>http://私服ip:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<!-- 配置私服-发布依赖 -->
<distributionManagement>
<repository>
<id>releases</id>
<name>maven-releases</name>
<url>http://私服ip:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>maven-snapshots</name>
<url>http://私服ip:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</profile>
这里需要注意的是,如果你需要将你的项目打包上传到私服上,要进行账号密码的设置。 在settings.xml中添加配置:
<server>
<id>releases</id>
<username>admin</username>
<password>你修改过后的密码</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>你修改过后的密码</password>
</server>
在idea中选择deploy进行项目打包上传:
注意:
(图来源于参考资料)
4.私服仓库的类型
(图来源于参考资料)
5.私服中仓库的加载顺序
这就是加载顺序,可手动调整。
如果希望了解关于maven各种仓库的加载顺序的话,可以参考我之前写的这篇:Maven仓库加载顺序