如何在Linux上部署Nexus私服
Nexus 是一个强大的仓库管理解决方案,由Sonatype公司开发。它主要用于软件开发中各种依赖包和构件的存储、管理和分发。
1、为什么要部署nexus?
- 统一管理依赖:在软件开发过程中,项目通常会依赖大量的第三方库或构件。直接从公共仓库如Maven Central、JCenter等下载,速度可能受限且不稳定。通过搭建私有的Nexus仓库,可以作为这些公共仓库的代理和缓存,提高依赖下载速度,并能在网络异常时继续提供服务。
- 内部构件共享:团队内部开发的构件可以直接上传到私有Nexus仓库中,方便团队成员之间共享和复用。这样既便于版本管理,又能保护内部知识产权,避免敏感代码直接暴露在外。
- 权限控制与审计:Nexus提供了详细的权限控制机制,可以根据组织结构和角色为不同用户提供对仓库的不同操作权限,例如发布、下载等。同时,它还支持记录所有上传、下载及构建活动的日志,便于进行合规审计和问题追踪。
- 构建流程优化:在CI/CD流程中集成Nexus,能够更好地控制构件发布的整个生命周期,包括SNAPSHOT版本管理和发布版本审批等,有助于提升持续集成和持续交付的效率。
- 多类型仓库支持:Nexus不仅支持Java/Maven生态系统的构件,还支持npm、NuGet、Docker等其他类型的包管理仓库,满足多样化的开发需求。
2、如何下载nexus?
1、下载最新版本的nexus 下载地址:http://www.sonatype.org/nexus/go (网站为国外网站,国内下载可能会很慢甚至无法下载,需要翻墙下载)
2、 博主已下载好目前最新版本的nexus放置于阿里云盘当中,有需要的小伙伴可通过云盘地址进行下载。 https://www.alipan.com/s/Z42R3FPtEyx 提取码: wp46 点击链接保存
3、如何安装nexus?
1、解压安装包:nexus-3.64.0-04-mac.tgz (博主下载的OS X的版本)
2、进入解压的目录:nexus-3.64.0-04-mac,里面有两个文件夹:nexus-3.64.0-04 、sonatype-work
Sonatype-work 是在安装 Nexus 后,用于存储其运行时数据和配置信息的工作目录。这个目录不在程序的安装路径下,通常是一个独立的数据存储位置,包含了所有的仓库配置、索引文件、缓存以及日志等重要数据。
进入 nexus-3.64.0-04/bin 运行 ./nexus run
出现 Started Sonatype Nexus OSS 3.64.0-04 则表示运行成功,可打开http://localhost:8081/进行访问
修改默认接口则在nexus-3.64.0-04-mac/nexus-3.64.0-04/etc/nexus-default.properties文件修改application-port,比如修改为 8888
3、配置nexus全局命令运行
vim ~/.bash_profile export NEXUS_HOME="/Users/pengyangyan/Downloads/nexus-3.64.0-04-mac/nexus-3.64.0-04" export PATH="$PATH:$NEXUS_HOME/bin:PATH" source ~/.bash_profile
此时就可以在任意目录运行nexus命令。
注意:mac电脑在解压nexus-3.64.0-04-mac.tgz 时,如果使用第三方解压工具,会造成nexus依赖jar包名称错误同时无法识别出jar包导致nexus无法运行,所以解压的时候最好使用mac自带的解压工具进行解压
4、登陆nexus
点击右上角Sign in 进行登陆 用户名: admin 。运行命令 cat /nexus-3.64.0-04-mac/sonatype-work/nexus3/admin.Password 可查看密码,登陆成功后会提示进行密码修改。
4、项目应用nexus进行包管理
1、点击Create repository 可创建其他类型的仓库,对于Java,里面已经内置了maven相关仓库,所以我这里就没有在进行创建,直接使用里面已有的仓库。
- Hosted(宿主)仓库:
- Maven Hosted:用于部署和管理内部开发团队编写的Java项目构件,包括Releases和Snapshots两种子类型。
- Releases仓库:用于发布稳定版构件。
- Snapshots仓库:用于存储项目快照版本的构件,这些版本可以随项目构建而频繁更新。
- Maven Hosted:用于部署和管理内部开发团队编写的Java项目构件,包括Releases和Snapshots两种子类型。
- Proxy(代理)仓库:
- Maven Proxy(或称Repository Proxy):作为远程公共仓库(如Maven中央仓库)的缓存,减少对外部网络的依赖,并且能限制哪些组件可以从外部获取。
- Group(仓库组):
- Maven Group:组合多个仓库(无论是Hosted还是Proxy),为用户提供统一的访问入口。当通过一个组仓库请求组件时,Nexus会自动在组内包含的所有仓库中查找所需的构件。
- Docker Registry(Docker仓库):
- Docker Hosted:托管内部开发的Docker镜像。
- Docker Proxy:代理远程的Docker注册表,比如Docker Hub。
- Docker Group:将多个Docker仓库聚合到一起,简化对Docker镜像的访问和管理。
- 其他类型:
- npm Hosted/Proxy/Group:对应于Node.js包管理器npm的仓库类型。
- NuGet Hosted/Proxy/Group:针对.NET生态系统的NuGet包管理仓库。
- Raw Hosted:用于托管非标准格式的文件,例如二进制文件或自定义格式的软件包。
2、配置maven的setting.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/Users/pengyangyan/.m2/repository</localRepository> <!-- Apache Maven 配置 --> <pluginGroups/> <proxies/> <!-- nexus 服务的账户密码配置 --> <servers> <server> <id>maven-public</id> <username>admin</username> <password>peng123.</password> </server> <server> <id>maven-snapshots</id> <username>admin</username> <password>peng123.</password> </server> <server> <id>maven-releases</id> <username>admin</username> <password>peng123.</password> </server> </servers> <!-- 阿里云镜像 --> <mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>aliyunmaven</name> <url>http://maven.aliyun.com/repository/public</url> </mirror> <mirror> <id>central</id> <name>Maven Repository Switchboard</name> <url>https://repo1.maven.org/maven2/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <profiles> <!-- 阿里云配置: 提高国内的jar包下载速度--> <profile> <id>all</id> <repositories> <repository> <id>alimaven</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>alimaven</id> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public</url> </pluginRepository> </pluginRepositories> </profile> <!-- 本地nexus仓库--> <profile> <id>maven-NEXUS</id> <!-- 远程仓库列表 --> <repositories> <repository> <id>maven-public</id> <name>test</name> <!-- 虚拟的URL形式,指向镜像的URL--> <url>http://localhost:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles> </settings>
3、手动上传jar包到私有仓库
4、项目jar推送至私有仓库
在需要发布的项目pom文件中添加distributionManagement配置,而后使用idea工具右侧的maven栏,点击deploy发布到远程仓库
在父级项目的pom.xml 配置上
<distributionManagement> <repository> <id>maven-releases</id> <name>Release Repositories</name> <url>http://localhost:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>maven-snapshots</id> <name>Snapshot Repositories</name> <url>http://localhost:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
而后登录到你的nexus私服就能查看部署的jar包
- mvn package
- 作用:完成编译、测试后,根据项目类型(如jar、war、ear等)打包项目。
- mvn install
- 作用:执行
package 之后,还将包安装到本地仓库,使得其他本地项目可以引用此项目作为依赖。- mvn deploy
- 作用:在成功完成
install 的基础上,将最终构建的工件部署到远程仓库,供其他团队成员或项目使用。
看到如图内容表示jar已成功推送到私有仓库。
完结,撒花??!!!