Linux环境下的Nexus私服搭建及包的上传

Linux环境下的Nexus私服搭建及包的上传

1、环境

服务器:CentsOS 6.9
nexus版本:nexus-3.15.2-01
JDk: 1.8.0_181
maven: apache-maven-3.6.0 maven的安装请参考:https://www.cnblogs.com/jimisun/p/8054819.html

2、安装

1、下载nexus
nexus分为两个版本分别是:Nexus Repository Pro和Nexus Repository OSS版本,Pro版本是企业收费版本,一般我们都下载oss版本。下载nexus OSS3.X unix版本,下载路径:https://www.sonatype.com/download-oss-sonatype,如下图所示:
在这里插入图片描述
2、nexus安装
在服务器新建目录用于存放nexus安装包,并将安装文件上传服务器对应目录,解压缩。

mkdir /usr/local/nexus
cd /usr/local/nexus
tar -vxf nexus-3.15.2-01-unix.tar.gz

解压缩完成会生成两个目录文件,如下图所示:
在这里插入图片描述
其中:sonatype-work为仓库资源文件,nexus-3.15.2-01 即为nexus的核心文件。

2、启动nexus服务
启动nexus之前,请确定环境变量中已经配置好了java和maven,如下图所示:
在这里插入图片描述
在这里插入图片描述
在nexus安装目录下执行如下命令启动nexus服务,如下图所示:

./bin/nexus start

在这里插入图片描述
这里的警告信息提示我们不能通过root账户来启动nexus服务,这对我们正常使用nexus没有影响,想要解决有以下办法:

  • vim /etc/profile ,在文件中添加代码:export RUN_AS_USER=root
  • vim /bin/nexus, 修改nexus启动文件, 将run_as_user=’'修改为run_as_user=‘root’,如下图所示
    在这里插入图片描述
    启动nexus后等一分钟左右,即可通过浏览器访问nexus服务了;如下图所示,
    在浏览器总输入地址:http://IP:8081,如果出现404,调整访问地址:http://IP:8081/nexus
    nexus默认的访问端口为8081端口,如果想修改端口。修改/conf/nexus.properties文件。
    在这里插入图片描述
    nexus web控制界面使用请自己点吧点吧学习。这里就不在赘述了。

2、包的自动化上传

nexus中,用户自建包的上传有三种方式,分别为:

  • cmd maven命令上传
  • nexus管理控制台update手动上传
  • 自动化deploy,结合idea,eclipse上传
    这里我们主要学习第三种方式的包的上传,在理解之前必须明白一点,客户端如何和nexus服务端建立联系呢?maven的客户端都是通过setting.xml来配置镜像地址的,首先我们从这里入手修改客户端maven的setting.xml文件,主要有三个地方需要修改:
    A:在servers标签下增加nexus的用户账号信息:
	<server>
	  <!-- 这是 server 的 id,该 id 与项目 pom.xml 节点 distributionManagement 中 repository 元素的 id 相匹配,此处为releases版本的仓库。 -->
	  <id>nexus-releases</id>
	  <!-- Nexus 的登录名 -->
      <username>admin</username> 
	  <!-- Nexus 的密码  默认账户和密码 -->	  
      <password>admin123</password>    
    </server>
	<server>
	 <!-- 这是 server 的 id,该 id 与项目 pom.xml 节点 distributionManagement 中 repository 元素的 id 相匹配。此处为snapshots版本的仓库 ,一定要注意区分-->
	  <id>nexus-snapshots</id>
	  <!-- Nexus 的登录名 -->
      <username>admin</username> 
	  <!-- Nexus 的密码  默认账户和密码-->	  
      <password>admin123</password>    
    </server>

B:在mirrors标签下增加miirror信息,指定到我们nexus仓库

 <!-- 我这里指定到maven-public仓库,此仓库整合了snapshots,releases,central库,如下图所示: -->
 <mirror>     
      <id>nexus-public</id>     
      <mirrorOf>*</mirrorOf>     
      <url>http://192.168.254.129:8081/repository/maven-public/</url>     
   </mirror>

在这里插入图片描述
C:配置profile标签下配置私服信息

	<profile>    
      <id>nexus</id>    
      <repositories>    
        <repository>    
          <id>local-nexus-public</id>    
          <url>http://192.168.254.129:8081/repository/maven-public/</url>
		  <!-- 是否下载 releases 构件 -->
          <releases><enabled>true</enabled></releases>
		  <!-- 是否下载 snapshots 构件 -->
          <snapshots><enabled>true</enabled></snapshots>    
        </repository>
      </repositories>    
      <pluginRepositories>    
        <pluginRepository>    
		  <id>local-nexus-public</id>    
		  <url>http://192.168.254.129:8081/repository/maven-public/</url>    
		  <!-- 是否下载 releases 构件 -->
		  <releases><enabled>true</enabled></releases>
		  <!-- 是否下载 snapshots 构件 -->
		  <snapshots><enabled>true</enabled></snapshots>    
        </pluginRepository>
       </pluginRepositories>    
    </profile>
  </profiles>

  <!-- 激活profile 下的 id -->
  <activeProfiles>    
      <activeProfile>nexus</activeProfile>    
  </activeProfiles> 

至此,我们setting.xml配置完毕。
下面我们更改pom.xml,完成distributionManagement的配置,链接起项目和客户端maven,
pom的project标签下加入distributionManagement配置。

 <distributionManagement>
    <repository>
      <id>nexus-releases</id>  <!--这里的配置名称对应setting.xml中server下的id标签-->
      <name>Nexus Release Repository</name>
      <url>http://192.168.254.129:8081/repository/maven-releases/</url> <!--这里的地址指定需求提交到的仓库-->
    </repository>
    <snapshotRepository>
      <id>nexus-snapshots</id> <!--这里的配置名称对应setting.xml中server下的id标签-->
      <name>Nexus Snapshots Repository</name>
      <url>http://192.168.254.129:8081/repository/maven-snapshots/</url><!--这里的地址指定需求提交到的仓库-->
    </snapshotRepository>
  </distributionManagement>

至此,所有的配置完成,我们通过idea的maven工具完成deploy操作,如下图所示:
在这里插入图片描述
编译提交成功后,即可以在nexus中找到我们提交的包,如下图所示
在这里插入图片描述

附加一些nexus中的一下概念说明,此处引用 http://www.cnblogs.com/kevingrace/p/6201984.html

注意下面几点说明:
1.component name的一些说明:
1)maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
2)maven-releases:私库发行版jar
3)maven-snapshots:私库快照(调试版本)jar
4)maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
2.Nexus默认的仓库类型有以下四种:
1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库;
2)hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库);
3)proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径);
4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用);
3.Policy(策略):表示该仓库为发布(Release)版本仓库还是快照(Snapshot)版本仓库;
4.Public Repositories下的仓库 1)3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库,即第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去; 2)Apache
Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库 3)Central:
用来代理maven中央仓库中发布版本构件的仓库 4)Central M1 shadow:
用于提供中央仓库中M1格式的发布版本的构件镜像仓库 5)Codehaus Snapshots: 用来代理CodehausMaven
仓库的快照版本构件的仓库 6)Releases:
内部的模块中release模块的发布仓库,用来部署管理内部的发布版本构件的宿主类型仓库;release是发布版本;
7)Snapshots:发布内部的SNAPSHOT模块的仓库,用来部署管理内部的快照版本构件的宿主类型仓库;snapshots是快照版本,也就是不稳定版本
所以自定义构建的仓库组代理仓库的顺序为:Releases,Snapshots,3rd
party,Central。也可以使用oschina放到Central前面,下载包会更快。
5.Nexus默认的端口是8081,可以在etc/nexus-default.properties配置中修改。
6.Nexus默认的用户名密码是admin/admin123
7.当遇到奇怪问题时,重启nexus,重启后web界面要1分钟左右后才能访问。
8.Nexus的工作目录是sonatype-work(路径一般在nexus同级目录下) [root@master-node local]# pwd /usr/local [root@master-node local]# ls nexus/ bin deploy etc lib
LICENSE.txt NOTICE.txt public system [root@master-node local]# ls
sonatype-work/ nexus3 [root@master-node local]# ls
sonatype-work/nexus3/ backup blobs cache db elasticsearch etc
generated-bundles health-check instances keystores lock log orient
port tmp

Nexus仓库分类的概念: 1)Maven可直接从宿主仓库下载构件,也可以从代理仓库下载构件,而代理仓库间接的从远程仓库下载并缓存构件
2)为了方便,Maven可以从仓库组下载构件,而仓库组并没有时间的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容).

------------------------------------没有梦想,无异咸鱼。不思学习,迟早咸鱼。------------------------------------

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值