史上最详细windows系统nexus3安装和配置

3,250 阅读7分钟

一、为什么要搭建私服nexus

1.本地开发机器上安装nexus

首先声明公司内部是有自己的nexus仓库,但是对上传jar包做了限制,不能畅快的上传自己测试包依赖。于是就自己在本地搭建了一个nexus私服,即可以使用公司nexus私服仓库中的依赖,也可以上传和使用自己的测试包依赖。

2.公司搭建私服作用:

原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。还有就是公司有自己的jar可以发布到私服上等等。

此文章测试搭建的是本地开发机器上安装nexus,无论是本地还是公司私服的搭建,都是一样的。

二、环境搭建

1.首先确定我们的环境安装好maven,jdk等必须的环境 2.这些都准备好之后,去下载最新版本的nexus
下载地址:www.sonatype.org/nexus/go

wps593C.tmp.jpeg

三、解压

  将下载的nexus-3.14.0-04-win64.zip解压到自定义目录即可。

四、配置nexus的端口和上下文路径

打开zip解压文件下的 ../nexus-3.14.0-04-win64/nexus-3.14.0-04/etc/nexus-default.properties。

wps593D.tmp.jpeg

1.如下属性可以自定义修改。 application-host : Nexus服务监听的主机 application-port: Nexus服务监听的端口, nexus-context-path : Nexus服务的上下文路径

通常可以不做任何修改,但个人习惯于修改 application-host 为0.0.0.0(关于0.0.0.0与127.0.0.1的区别自行检索),我这里修改了端口和host。

五、运行环境配置

  打开解压目录下的 ../nexus-3.14.0-04-win64/nexus-3.14.0-04/bin/nexus.vmoptions

  可以在下图配置运行时的最大堆、最小堆等,可以根据个人的电脑以及需要修改,默认配置如下。

wps593E.tmp.jpeg

六、nexus安装

  在.../nexus-3.14.0-04-win64/nexus-3.14.0-04/bin 目录下,

必须以管理员身份运行cmd :

  1. nexus.exe /run 命令可以启动nexus服务(参考官方文档)
  2. 安装nexus本地服务来启动(推荐使用这种方式,参考官方文档),命令如下所示。

安装nexus服务

PS D:\Nexus\nexus-3.14.0-04\bin> ./nexus.exe /install		 //安装nexus服务

七、启动/关闭nexus服务

必须以管理员身份运行cmd :

 PS D:\Nexus\nexus-3.14.0-04\bin> ./nexus.exe /start 		 //启动nexus服务 

PS D:\Nexus\nexus-3.14.0-04\bin> ./nexus.exe /stop  		 //停止nexus服务

八、登录

如果没有做任何端口和上下文路径的修改,直接访问 http://localhost:8081即可。 我这里更改成 http://127.0.0.1:8181   默认的用户名和密码分别是:admin/amdin123 修改密码:

QW123.png

D@UTE1XF1159.png

VVSWS28ZYUTX.png

3HEZ2HDC~QLD.png

九、nexus仓库类型介绍

  默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等。

wps594F.tmp.jpeg

nexus仓库分类.png

十、分组仓库的使用

wps5950.tmp.jpeg

如上图所示,maven-public就我创建的组仓库。以及还创建了3个代理仓库,如下。

配置代理仓库:

  1、jcenter仓库:jcenter.bintray.com/ 创建过程:(其余一样)

L`Q%IKWE%OWW.png

W3RS1258`ST3.png

wps5960.tmp.jpeg

  2、maven中央仓库:repo1.maven.org/maven2/ 一般默认已经创建,没有创建就和上面一样1过程。

wps5961.tmp.jpeg

3、公司内部nexus仓库,这里就不给出了 ---可以选择配置 创建公司的代理

4、最后建立组仓库maven-public,如下。

(1) 将创建的仓库添加进仓库组。   

Y2NGK)42U_XD.png

  组仓库中包含了公司私服dist、jcenter、maven-central、本地maven-releases,本地maven-snapshots。

修改maven配置setting.xml文件

5.创建好组仓库之后,修改maven配置setting.xml文件,添加maven仓库镜像,如下。 Nexus的仓库对于匿名用户只是只读的。为了能够部署构件,我们还需要再settings.xml中配置验证信息:

<server>  
<id>nexus</id>  
<username>admin</username>  
<password>admin123</password>
</server> 

配置远程仓库下载jar地址

<mirror>      
<id>nexus</id>      
<mirrorOf>*</mirrorOf>
<url>http://127.0.0.1:8181/repository/maven-public/</url>   
</mirror>

接着修改maven项目中的pom.xml,如下。

6.不配置setting.xml中server就没有权限上传jar,只能下载jar。 这个配置可以下载jar和部署构建

<!--============== 配置nexus私服START =============== -->
<repositories>  
  <repository>    
    <id>maven-central</id>    
    <name>maven-central</name>  
    <!--仓库地址-->  
    <url>http://127.0.0.1:8181/repository/maven-central/</url>    
    <snapshots>     
    	<enabled>true</enabled>    
    </snapshots>    
    <releases>      
    	<enabled>true</enabled>    
    </releases>  
  </repository>
</repositories>

<pluginRepositories>  
  <pluginRepository>  
    <!--插件地址--> 
      <id>nexus</id>  
      <url>http://127.0.0.1:8181/repository/maven-public/</url>  
  </pluginRepository>
 </pluginRepositories>
 
<distributionManagement>  
  <repository>    
      <id>nexus</id>    
      <url>http://127.0.0.1:8181/repository/maven-releases/</url> 
  </repository>  
  <snapshotRepository>  
     <!--上传快照-->  
      <id>nexus</id>    
      <name>Nexus Snapshot</name>    
      <url>http://127.0.0.1:8181/repository/maven-snapshots/</url>  
  </snapshotRepository> 
  <site>   
      <id>nexus</id>    
      <name>Nexus Sites</name>   
      <url>dav:http://127.0.0.1:8181/repository/maven-snapshots/</url>  
  </site>
</distributionManagement>
<!--============== 配置私服End =============== -->

部署构件到私服

(1)Nexus的仓库对于匿名用户只是只读的。为了能够部署构件,我们还需要再settings.xml中配置验证信息:

<server>
  <id>snapshots</id>
  <username>admin</username>
  <password>admin123</password>
</server>
<server>
  <id>releases</id>
  <username>admin</username>
  <password>admin123</password>
</server>

其中,验证信息中service的id应该与POM中repository的id一致

(2)发布到私服的配置

<!-- 配置远程发布到私服,mvn deploy -->
<distributionManagement>
  <repository>
    <id>releases</id>
    <name> Nexus Release Repository </name>
    <url> http://127.0.0.1:8081/nexus/content/repositories/releases/ </url>
  </repository>
  <snapshotRepository>
    <id>snapshots</id>
    <name> Nexus Snapshot Repository </name>
    <url> http://127.0.0.1:8081/nexus/content/repositories/snapshots/ </url>           </snapshotRepository >
</distributionManagement >

部署命令: 还可以这么配

 <distributionManagement>
   <repository>
     <id>maven-releases</id>
     <name>Nexus Release Repository</name>
     <url>http://localhost:8082/repository/maven-releases/</url>
   </repository>
   <snapshotRepository>
     <id>maven-snapshots</id>
     <name>Nexus Snapshot Repository</name>
     <url>http://localhost:8082/repository/maven-snapshots/</url>
   </snapshotRepository>
</distributionManagement>

如果是gradle项目,修改init.gradle文件,如下。

 uploadArchives {
    def nexus_credentials = [userName: "admin", password: "admin123"]
    repositories.mavenDeployer {
        snapshotRepository(url: "http://127.0.0.1:8082/repository/maven-snapshots/") {
            authentication(nexus_credentials)
        }
        repository(url: "http://127.0.0.1:8082/repository/maven-releases/") {
            authentication(nexus_credentials)
        }
    }
}

十一、上传jar的两种方式:

比如上传这个jar nexus提供了3rd party、Snapshots、Releases这三个目录存放第三方jar包

DRO)C12K)MRY.png

(1)登录nexus(默认用户名密码/admin、admin123) (2)Create repository

clipboard.png

解释一下: proxy:即你可以设置代理,设置了代理之后,在你的nexus中找不到的依赖就会去配置的代理的地址中找 hosted:你可以上传你自己的项目到这里面 group:它可以包含前面两个,是一个聚合体。一般用来给客户一个访问nexus的统一地址。 简单的说,就是你可以上传私有的项目到hosted,以及配置proxy以获取第三方的依赖(比如可以配置中央仓库的地址)。前面两个都 弄好了之后,在通过group聚合给客户提供统一的访问地址。

clipboard3.png

修改maven安装目录下的 /conf/settings.xml 文件,添加server 节点。如图:

clipboard4.png

1.方式一

开始上传jar 打开cmd输入修改后的模板 模板

mvn deploy:deploy-file -DgroupId=xxx.xxx -DartifactId=xxx -Dversion=0.0.2 -Dpackaging=jar -Dfile=D:\xxx.jar -Durl=http://xxx.xxx.xxx.xxx:8081/repository/3rdParty/ -DrepositoryId=3rdParty

模板解析:

-DgroupId 为上传的jar的groupId-DartifactId 为上传的jar的artifactId-Dversion 为上传的jar的需要被依赖的时候的版本号-Dpackaging为jar,-Dfile为jar包路径-Durl 为要上传的路径,可以通过以下方式获取到

举个例子:

C:\Users\Administrator>mvn deploy:deploy-file -DgroupId=dist.xdata.product -DartifactId=distexcel -Dversion=1.0.1.RELEASE -Dpackaging=jar -Dfile=I:\maven\repository\dist\xdata\product\distexcel\1.0.1.RELEASE\distexcel-1.0.1.RELEASE.jar -Durl=http://192.168.2.81:8181/repository/3rd-party/ -DrepositoryId=3rd-party
mvn deploy:deploy-file -DgroupId=dist.xdata.product -DartifactId=distexcel -Dversion=1.0.1.RELEASE -Dpackaging=jar -Dfile=I:\maven\repository\dist\xdata\product\distexcel\1.0.1.RELEASE\distexcel-1.0.1.RELEASE.jar -Durl=http://192.168.2.81:8181/repository/3rd-party/ -DrepositoryId=3rd-party

上传成功:

BYK.png

上传后在nexus中查看:

clipboard6.png

2.上传方式二:

更简单的上传方式

nexus提供了3rd party、Snapshots、Releases这三个目录存放第三方jar包

BB0YC2MG2XKJ.png

_1{_DZE_W85E.png

查看上传的jar.png

十二、nexus3.x权限配置

1.去掉“勾”是禁用匿名访权限。

clipboard7.png

2.角色创建

clipboard8.png

3.人员创建

clipboard9.png

4.代理配置

通过该配置可以使得两个Nexus服务器相关联。

(1)配置地址

clipboard10.png

(2)配置用户

clipboard11.png