Nexus 3.x官网下载地址
Nexus 2.x官网下载地址
官网下载需要科学上网,不能下载的话可下载下面两个linux安装包
linux nexus-3.31.1-01-unix.tar.gz 提取码:5vm0
linux nexus-2.14.8-01-bundle.tar.gz 提取码:wh1k
安装nexus之前,需要服务器已安装jdk:centos7安装jdk、git、maven

一、nexus 安装

1、上传 nexus 安装包
在 linux 服务器上,创建文件夹存放 nexus 安装包,比如:/usr/nexus,可通过xftp上传
2、解压 nexus 安装包

tar -zxvf nexus-3.31.1-01-unix.tar.gz

3、启动 nexus
nexus 解压后就可以直接启动了,不需要安装操作;
进入到解压目录 nexus-3.31.1-01 中,再进入到 bin 目录,其中的可执行文件 nexus 就是启动程序。
启动命令:

./nexus start:后台启动 nexus 也就是不能直接查看到日志。
./nexus run:前台启动 nexus 可以直接查看到日志,但是会一直占用当前窗口,当前窗口一旦关闭则 nexus 服务也会关闭;比如关闭当前 xshell 窗口或者 Ctrl+C 都会关闭 nexus 服务,需要操作当前服务器的话需要另开窗口。

在这里插入图片描述
4、查看 nexus 状态
注意:执行启动命令后,需要稍等短则十秒左右,长则两三分钟,查看 nexus 状态时才可能是启动状态,时间长短和服务器配置有关系。如果超过两三分钟查看 nexus 状态还是 nexus is stopped. 应该是启动失败了,本文末有解决方案。

./nexus status

在这里插入图片描述
状态为 nexus is stopped. 未启动,状态为 nexus is running. 则成功启动。
5、查看端口占用情况

netstat -anp | grep java

其中 8081端口(固定的) 就是访问 nexus 的端口号;8081 端口的进程要在启动 /usr/nexus/nexus-3.31.1-01/bin/nexus 主体程序一、两分钟后才会启动(也就是上一步查看 nexus 状态为nexus is running.之后,一两分钟),需要稍加等待。
在这里插入图片描述
6、访问 nexus 首页
地址:安装nexus服务的服务器ip:8081
在这里插入图片描述
注意:如果服务器的8081端口没有放开,则访问不了 nexus 首页;比如阿里云服务器需要在安全组里面打开 8081 端口。
在这里插入图片描述
下面链接中有关闭 centOS 服务器防火墙或防火墙放开某个端口的方法:
centos7安装MySQL、redis

7、初始设置
右上角点击登录
在这里插入图片描述
提示:账号为 admin 密码则保存在 /usr/nexus/sonatype-work/nexus3/admin.password 文件中
在这里插入图片描述
获取 /usr/nexus/sonatype-work/nexus3/admin.password 文件中的admin账号密码:
在这里插入图片描述
使用 admin 账号登录,并设置新密码
在这里插入图片描述
启用或禁用匿名登陆,区别:启用匿名登录则在使用该 nexus 时,不需要账号密码,禁用匿名登录则在使用该 nexus 时,需要账号密码。也就是 maven 的 settings.xml 文件中,配置使用该 nexus 时,是否需要配置账号密码信息。
在这里插入图片描述
是否同意 Nexus 收集信息帮助我们改善 Nexus Repository体验
在这里插入图片描述
到此 nexus 安装完毕。
8、Nexus 的各种仓库
在这里插入图片描述

仓库类型说明
proxy某个远程仓库的代理
group存放通过 Nexus 获取的第三方 jar 包
hosted存放本团队其他开发人员部署到 Nexus 的 jar 包
仓库名称说明
maven-centralNexus 对 Maven 中央仓库的代理
maven-publicNexus 默认创建,供开发人员下载使用的主仓库
maven-releasseNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 releasse 版本
maven-snapshotsNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 snapshots 版本

nexus 默认所有仓库都没有内容。

二、nexus 对接

1、通过 nexus 下载 jar 包
设置 maven settings.xml 文件
注意:只能是设置 settings.xml 文件;比如还有一个 settings1.xml 文件,如果设置这个文件,并且idea中 maven 项目设置的 maven 信息也是 settings1.xml 文件,在下载 jar 包的时候 settings1.xml 中设置的 nexus 仓库地址不会生效;所以maven项目设置的maven信息只能是 settings.xml 文件,并且只能在 settings.xml 文件中设置相关信息。
a、将原来配置的仓库地址(如:阿里云仓库地址)的 mirror 标签改成 nexus 的仓库地址:

<mirror>
    <!-- id:可自定义 -->
	<id>nexus-mine</id>
	<!-- mirrorOf:配置成 * 表示通过 nexus 访问网路上所有的远程仓库;配置成central,表示访问 nexus 的central仓库; -->
	<mirrorOf>central</mirrorOf>
	<!-- name:可自定义 -->
	<name>Nexus mine</name>
	<!-- url:仓库地址 -->
	<url>http://xx.xx.xx.197:8081/repository/maven-public/</url>
</mirror>

其中 url 标签指定的地址是-nexus中 maven-public 仓库的地址:
在这里插入图片描述
如果 nexus 设置的是启用匿名访问,此时就可以在 maven 项目中,通过 nexus 下载 jar 包了。但如果禁用了匿名访问,则还需要在 settings.xml 中配置账号密码信息;
b、配置 nexus 账号密码信息

<server>
  <!-- id:此处id是唯一标识,可以配置多个server指定多个账号密码信息,配置仓库信息的时候,id和此处id一致则采用当前账号密码作为访问对应仓库时的账号密码 -->
  <id>nexus-mine</id>
  <username>admin</username>
  <password>123456</password>
</server>

注意:server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样;密码是上面 7、初始设置 中设置的密码
修改完毕 settings.xml 文件后,在maven项目中拉取jar包的时候则会通过 nexus 去拉取 jar 包;此时下载的jar包如果 nexus maven-public 仓库中没有会从中央仓库下载并且会在 nexus 的 maven-public 仓库中也保存一份;后续使用 nexus 下载这些包时,将直接在 maven-public 仓库下载,而不用去中央仓库下载,从而提升速度。
在这里插入图片描述
如果包比较大/多第一次下载 nexus 从中央仓库下载会比较慢,那么可以将 nexus 的代理仓库设置为阿里云仓库;这样即使 nexus 中没有的包,也会去阿里云仓库下载提升速度;即修改 maven-central 仓库代理的远程库地址。
在这里插入图片描述
在这里插入图片描述
阿里云仓库地址:

http://maven.aliyun.com/nexus/content/groups/public

修改后点击页面下方的 save 按钮即可。
2、将 jar 包部署到 nexus
每个需要部署到 nexus 的 maven 工程都要做对应配置,不能在 settings.xml 中配置全局生效。
部署时,主要部署在 nexus 的 maven-releasse 和 maven-snapshots 仓库中。

maven-releasse:Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 releasse 版本
maven-snapshots:Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 snapshots 版本
解释:也就是 maven 工程的 pom.xml 文件中定义的坐标信息,如果 version 带有 SNAPSHOT 则部署在 maven-snapshots 仓库中(快照版-经常更新); version 不带 SNAPSHOT 则部署在 maven-releasse 仓库中(稳定版-不常更新);

在当前 maven 工程的 pom.xml 中,配置 maven-releasse 和 maven-snapshots 仓库信息:

    <distributionManagement>
        <repository>
            <id>nexus-mine</id>
            <name>Nexus Release</name>
            <url>http://xx.xx.xx.197:8081/repository/maven-releases/</url>
        </repository>

        <snapshotRepository>
            <id>nexus-mine</id>
            <name>Nexus SNAPSHOTS</name>
            <url>http://xx.xx.xx.197:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

其中id需要和 settings.xml 文件中的 server 标签id匹配,也就是此处的两个id可以一样(因为 1、通过 nexus 下载 jar 包 中已经设置了 server 所以此处的两个id和这个server的id一致即可);如果写不同则需要在 settings.xml 文件中,配置对应id server 标签;比如账号密码不一样则必须写不同 server。
两个 url 分别是:
在这里插入图片描述
在当前 maven 工程中,执行 deploy 部署命令:

mvn deploy 或 mvn clean deploy

执行成功后,查看 nexus 对应仓库会存在该工程的 jar 包;
在这里插入图片描述
3、引用别人部署的 jar 包
中央仓库的 jar 包存在 maven-public 仓库中;自己开发的包部署在 maven-releasse 和 maven-snapshots 仓库中,所以下载别人开发的 jar 包是从 maven-releasse 和 maven-snapshots 仓库中下载。
可以在 settings.xml 中配合全局生效或者每个工程中单独配置。
a、每个工程 pom.xml 文件中配置,这两个 url 和 2、将 jar 包部署到 nexus 中的两个 url 一致;并且id标签可以一样,和 settings.xml 中 server 标签id保持一致。

    <repositories>
        <repository>
            <id>nexus-mine</id>
            <name>maven-snapshots</name>
            <url>http://xx.xx.xx.197:8081/repository/maven-snapshots/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
            <layout>default</layout>
        </repository>

        <repository>
            <id>nexus-mine</id>
            <name>maven-releases</name>
            <url>http://xx.xx.xx.197:8081/repository/maven-releases/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
            <layout>default</layout>
        </repository>
    </repositories>

b、settings.xml 中设置-需要依赖 profile 标签,repository的id值不能一样,但是一般账号密码都是一致的,所以需要配置 id 分别为 nexus-maven-snapshots 和 nexus-maven-releases 的 server,其中的账号密码一样。

  <profiles>
	<profile>
			<id>dev</id>
			<repositories>
				<repository>
					<id>nexus-maven-snapshots</id>
					<name>maven-snapshots</name>
					<url>http://xx.xx.xx.197:8081/repository/maven-snapshots/</url>
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
					<layout>default</layout>
				</repository>
				
				<repository>
					<id>nexus-maven-releases</id>
					<name>maven-releases</name>
					<url>http://xx.xx.xx.197:8081/repository/maven-releases/</url>
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
					<layout>default</layout>
				</repository>
			</repositories>
		</profile>
	
  </profiles>

<!-- 激活上面配置的 dev profile -->
  <activeProfiles>
		<activeProfile>dev</activeProfile>
	</activeProfiles>

启动失败排查:
因为执行 ./nexus start 启动无法直接查看日志,选择执行 ./nexus run 进行启动,查看报错原因:
在这里插入图片描述
可以看到报错 error=‘Cannot allocate memory’ 也就是不能分配内存,原因在于 nexus 默认配置的内存大小是需要 2G,有些版本对内存要求可能更高,比如我这里安装的 nexus-3.31.1-01 默认配置是:

-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m

但是服务器剩余可用内存又不够默认配置需要的大小,所以 不能分配内存 启动失败,解决方案最好的当然是在配置更高的服务器上安装,如果没有更好的服务器,那么就将配置文件中设置的内存大小调小;该配置文件所在位置:nexus 解压包文件夹下的 bin 目录,nexus.vmoptions 文件。
在这里插入图片描述
修改后再次启动,可以成功启动
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐