如何在Linux上部署Nexus私服

如何在Linux上部署Nexus私服

Nexus 是一个强大的仓库管理解决方案,由Sonatype公司开发。它主要用于软件开发中各种依赖包和构件的存储、管理和分发。

1、为什么要部署nexus?

  1. 统一管理依赖:在软件开发过程中,项目通常会依赖大量的第三方库或构件。直接从公共仓库如Maven Central、JCenter等下载,速度可能受限且不稳定。通过搭建私有的Nexus仓库,可以作为这些公共仓库的代理和缓存,提高依赖下载速度,并能在网络异常时继续提供服务。
  2. 内部构件共享:团队内部开发的构件可以直接上传到私有Nexus仓库中,方便团队成员之间共享和复用。这样既便于版本管理,又能保护内部知识产权,避免敏感代码直接暴露在外。
  3. 权限控制与审计:Nexus提供了详细的权限控制机制,可以根据组织结构和角色为不同用户提供对仓库的不同操作权限,例如发布、下载等。同时,它还支持记录所有上传、下载及构建活动的日志,便于进行合规审计和问题追踪。
  4. 构建流程优化:在CI/CD流程中集成Nexus,能够更好地控制构件发布的整个生命周期,包括SNAPSHOT版本管理和发布版本审批等,有助于提升持续集成和持续交付的效率。
  5. 多类型仓库支持: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-04sonatype-work

Sonatype-work 是在安装 Nexus 后,用于存储其运行时数据和配置信息的工作目录。这个目录不在程序的安装路径下,通常是一个独立的数据存储位置,包含了所有的仓库配置、索引文件、缓存以及日志等重要数据。

进入 nexus-3.64.0-04/bin 运行 ./nexus run

如何在Linux上部署Nexus私服_第1张图片

出现 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

如何在Linux上部署Nexus私服_第2张图片

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

如何在Linux上部署Nexus私服_第3张图片

点击右上角Sign in 进行登陆 用户名: admin 。运行命令 cat /nexus-3.64.0-04-mac/sonatype-work/nexus3/admin.Password 可查看密码,登陆成功后会提示进行密码修改。

4、项目应用nexus进行包管理

如何在Linux上部署Nexus私服_第4张图片

1、点击Create repository 可创建其他类型的仓库,对于Java,里面已经内置了maven相关仓库,所以我这里就没有在进行创建,直接使用里面已有的仓库。

  1. Hosted(宿主)仓库
    • Maven Hosted:用于部署和管理内部开发团队编写的Java项目构件,包括Releases和Snapshots两种子类型。
      • Releases仓库:用于发布稳定版构件。
      • Snapshots仓库:用于存储项目快照版本的构件,这些版本可以随项目构建而频繁更新。
  2. Proxy(代理)仓库
    • Maven Proxy(或称Repository Proxy):作为远程公共仓库(如Maven中央仓库)的缓存,减少对外部网络的依赖,并且能限制哪些组件可以从外部获取。
  3. Group(仓库组)
    • Maven Group:组合多个仓库(无论是Hosted还是Proxy),为用户提供统一的访问入口。当通过一个组仓库请求组件时,Nexus会自动在组内包含的所有仓库中查找所需的构件。
  4. Docker Registry(Docker仓库)
    • Docker Hosted:托管内部开发的Docker镜像。
    • Docker Proxy:代理远程的Docker注册表,比如Docker Hub。
    • Docker Group:将多个Docker仓库聚合到一起,简化对Docker镜像的访问和管理。
  5. 其他类型
    • npm Hosted/Proxy/Group:对应于Node.js包管理器npm的仓库类型。
    • NuGet Hosted/Proxy/Group:针对.NET生态系统的NuGet包管理仓库。
    • Raw Hosted:用于托管非标准格式的文件,例如二进制文件或自定义格式的软件包。

2、配置maven的setting.xml文件如下:


<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/repositorylocalRepository>

   
    <pluginGroups/>
    <proxies/>
    
      
     <servers>
        <server>
            <id>maven-publicid>
            <username>adminusername>
            <password>peng123.password>
        server>
        <server>
            <id>maven-snapshotsid>
            <username>adminusername>
            <password>peng123.password>
        server>
        <server>
            <id>maven-releasesid>
            <username>adminusername>
            <password>peng123.password>
        server>
    servers>


   
    <mirrors>
        <mirror>
			<id>aliyunmavenid>
			<mirrorOf>*mirrorOf>
			<name>aliyunmavenname>
			<url>http://maven.aliyun.com/repository/publicurl>
		mirror>
		<mirror>
			<id>centralid>
			<name>Maven Repository Switchboardname>
			<url>https://repo1.maven.org/maven2/url>
			<mirrorOf>centralmirrorOf>
		mirror>
    mirrors>

	<profiles>

        
        <profile>
            <id>allid>
            <repositories>
                <repository>
                    <id>alimavenid>
                    <name>aliyun mavenname>
                    <url>https://maven.aliyun.com/repository/publicurl>
                    <releases>
                        <enabled>trueenabled>
                    releases>
                    <snapshots>
                        <enabled>trueenabled>
                    snapshots>
                repository>
            repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>alimavenid>
                    <name>aliyun mavenname>
                    <url>https://maven.aliyun.com/repository/publicurl>
                pluginRepository>
            pluginRepositories>
        profile>

        
        <profile>
        <id>maven-NEXUSid>
            
            <repositories>
                <repository>
                    <id>maven-publicid>
                    <name>testname>
                    
                    <url>http://localhost:8081/repository/maven-public/url>
                    <releases>
                        <enabled>trueenabled>
                    releases>
                    <snapshots>
                        <enabled>trueenabled>
                    snapshots>
                repository>
            repositories>
        profile>

    profiles>


settings>

3、手动上传jar包到私有仓库
如何在Linux上部署Nexus私服_第5张图片

4、项目jar推送至私有仓库

在需要发布的项目pom文件中添加distributionManagement配置,而后使用idea工具右侧的maven栏,点击deploy发布到远程仓库

在父级项目的pom.xml 配置上

    <distributionManagement>
        <repository>
            <id>maven-releasesid>
            <name>Release Repositoriesname>
            <url>http://localhost:8081/repository/maven-releases/url>
        repository>
        <snapshotRepository>
            <id>maven-snapshotsid>
            <name>Snapshot Repositoriesname>
            <url>http://localhost:8081/repository/maven-snapshots/url>
        snapshotRepository>
    distributionManagement>

如何在Linux上部署Nexus私服_第6张图片

而后登录到你的nexus私服就能查看部署的jar包

  1. mvn package
    • 作用:完成编译、测试后,根据项目类型(如jar、war、ear等)打包项目。
  2. mvn install
    • 作用:执行 package 之后,还将包安装到本地仓库,使得其他本地项目可以引用此项目作为依赖。
  3. mvn deploy
    • 作用:在成功完成 install 的基础上,将最终构建的工件部署到远程仓库,供其他团队成员或项目使用。

如何在Linux上部署Nexus私服_第7张图片

看到如图内容表示jar已成功推送到私有仓库。

完结,撒花!!!

你可能感兴趣的:(Java,linux,运维,服务器)