Nexus搭建私服进行代码托管

0、应用场景

对于IT行业来说,源代码是很核心的资源,中大型公司一般都有自己代码库,是不对外开放的,更多的是存在内网,即使放在公网也只是针对自己公司的IP开放访问。多个部门开发不同的项目,多会使用到一些基础的模块,比如电商公司有基础的支付SDK,当其他部门开发时候多是引用一下基础SDK的jar即可,但是复制来复制去不方便,也不利于版本管理。解决方案就是搭建自己的代码库(私服),把基础模块sdk都放进去,谁想用就从私服上下载,和添加其他依赖一样,添加即可。如果有更新,升级版本号后在推倒私服。其他人也可以直接引用最新的,实现了代码共享,减少了基础模块的开发。

 

1、nexus安装部署

下载windows或者linux端,部署启动,需修改端口和host地址, cmd进去nexus/run
  • 下载windows版本nexus ,下载地址https://www.sonatype.com/download-oss-sonatype
  • 把解压压缩包,解压后的压缩包放在你想安装存放的目录,桌面也行。最好是D盘根目录,解压完以后会有两个文件夹 , nexus-3.7.1-02和 sonatype-work , nexus-3.7.1-02 是程序文件夹 , 里面有个 bin 文件夹存放了运行的程序入口 ; sonatype-work 主要是配置/缓存/存储文件夹 ;然后通过cmd进入bin这个目录,执行以下命令进行启动
nexus/run
注意:

1.默认端口号是8081.默认用户名admin密码admin123

2.默认配置文件是nexus-3.7.1-02/etc/ nexus-default.properties ,可以配置端口号

3.登陆地址是http://127.0.0.1:8081/nexus 如果在云服务器安装,用云服务器公网IP替换127.0.0.1,端口号如果没有改就还是8081,后面nexus勿忘。

 

2、将nexus用户名和密码配置在本机maven内

一般来说nexus是有用户名密码的,当从上面下载jar或者上载jar都需要认证,这个认证过程一般是通过maven来完成,当然也有gradle。此处演示使用的是maven,maven的配置文件是在maven安装目录conf/setting.xml

这个配置是对本机所有仓库生效,也就是说这个用户名密码可以用来登陆多个私服。那问题来了,如果我不同项目配置的不同私服,用户名密码都是不一样的怎么办?这里是根据id来区分的,简而言之就是你在setting.xml里面配置的多个用户名密码信息就像一个密钥对,密钥对都有一个id,在不同项目私服里,指定某个密钥对的id来登陆不同的私服.

conf/setting.xml里面是有<servers></servers>,我们需要在里面加一个或多个server.举例如下:

  <servers>

  <server>

      <id>vsalwResp</id>

      <username>admin</username>

      <password>admin123</password>

    </server>

</servers>

注意这里id是vsalwResp,后面会用到。

 

3、在项目pom文件配置私服的快照库和正式库信息

私服搭建好了,用户名密码也配置好了,此时就需要在项目中使用了,首先是指定一下maven的仓库是我们的私服,这里只为了下载速度更快,也可以指定阿里云的。我在下面指定了一个阿里云的,一个我的私服。这一步是非必需的.
<repositories> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </repository> <repository> <id>vsalwResp</id> <url>http://nexus.vsalw.com:8888/repository/maven-releases/</url> </repository> </repositories>
 

那么现在我怎么上传我的jar到私服呢?这里就需要了解仓库中的版本库,RELEASE和SNAPSHOT,具体配置如下:

<distributionManagement> <repository>         <id>vsalwResp</id>         <name>Releases</name>         <url>http://nexus.vsalw.com:8888/repository/maven-releases/</url>     </repository>   <snapshotRepository>         <id>vsalwResp</id>         <name>Snapshot</name>         <url>http://nexus.vsalw.com:8888/repository/maven-snapshots/</url>     </snapshotRepository> </distributionManagement>
 注意:
  1. 上面的id字段,实际就是我在maven安装目录中配置的“密钥对”的id
  2. 上面配置了2个库,一个是稳定版本RELEASE一个是开发版本(也就是不稳定版本)SNAPSHOT ,具体你的jar上传到了哪个库,是根据你的jar中,version字段来匹配的,注意是全大写。比如我的sdk信息如下:<version>带SNAPSHOT则会上传到快照库。
<groupId>com.wll.sdk</groupId> <artifactId>demo</artifactId> <version>0.0.4-SNAPSHOT</version> <packaging>jar</packaging>
3.参考文档:https://www.cnblogs.com/duanxz/p/5210189.html

4、执行命令 mvn clean deploy 进行上传。