下载

https://help.sonatype.com/repomanager2/download/download-archives—repository-manager-oss https://www.sonatype.com/products/repository-oss-download
https://download.sonatype.com/nexus/3/latest-unix.tar.gz

都下载不了,应该是被防火墙屏蔽了,我另外上传的包吧

直接docker方式也行
https://hub.docker.com/r/sonatype/nexus3/

tar.gz方式部署

#解压
tar -xzvf nexus-3.19.1-01-unix.tar.gz
cd nexus-3.19.1-01/bin
#启动服务
./nexus start
#添加8081端口到防火墙规则(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=8081/tcp --permanent 
#重新载入
firewall-cmd --reload

访问
http://ip:8081/

右上角登录,用户名admin,密码在sonatype-work/nexus3/admin.password文件中

登录后要修改新密码,改为admin(后面要用到)

然后弹出Configure Anonymous Access,我们允许匿名访问,勾选Enable anonymous access

Browse菜单可以看到几个maven2(java包)和nuget(.net包)的仓库

sonatype-work是工作目录

配置文件:
sonatype-work/nexus3/etc/nexus.properties

应该可以改端口什么的

上传jar包

web直接上传

登陆后,Upload菜单可以选择maven-releases这个maven仓库上传jar包,选择jar包,填写groupid、artifactid、version,点击upload即可上传

点击上方齿轮进入设置页面,Repository——Repositorys,点击maven-release仓库,可以看到仓库url:http://10.0.1.151:8081/repository/maven-releases/

maven项目中上传

编写一个maven项目

pom.xml中project配置节添加

<!-- 使用分发管理将本项目打成jar包,直接上传到指定服务器 -->
    <distributionManagement>
        <!--正式版本-->
        <repository>
            <!-- nexus服务器中用户名:在settings.xml中<server>的id-->
            <id>nexus-releases</id>
            <!-- 这个名称自己定义 -->
            <name>Release repository</name>
            <url>http://10.0.1.151:8081/repository/maven-releases/</url>
        </repository>
        <!--快照-->
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Snapshots repository</name>
            <url>http://10.0.1.151:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

用户的目录下.m2/settings.xml配置中(没有从maven的conf目录拷贝过来一个)
servers配置节添加

<server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin</password>
    </server>
    <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin</password>
    </server>

运行mvn deploy,执行到Uploading to nexus-snapshots就是正在往nexus中上传包了。

上传完成后,可以到nexus web界面的Browse或者Search中查看包

maven命令直接上传

mvn deploy:deploy-file -DgroupId=org.whq -DartifactId=abc -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=abc-1.0-SNAPSHOT.jar -Durl=http://10.0.1.151:8081/repository/maven-snapshots/ -DrepositoryId=nexus-snapshots

注意,用户名密码也是存储在上一步中存储的settings.xml的id为nexus-snapshots的server中的

使用私服

配置maven镜像

中央仓库等第三方仓库的镜像,中央仓库对应nexus的maven-central仓库(admin设置打开这个仓库可以看到配置了proxy代理https://repo1.maven.org/maven2/)

settings.xml的mirrors节添加,项目刷新maven(下载maven依赖)时会先从中央仓库下载到nexus服务器,再下载到本地(可以看下nexus服务器中已经有项目依赖的包了)

<mirror>
      <id>nexus-central</id>
      <mirrorOf>central</mirrorOf>
      <name>local-central</name>
      <url>http://10.0.1.151:8081/repository/maven-central/</url>
    </mirror>

pom.xml下载刚才上传的jar包

pom.xml中project节配置

<repositories>
        <repository>
            <id>nexus-snapshots</id>
            <name>Snapshots repository</name>
            <url>http://10.0.1.151:8081/repository/maven-snapshots/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

添加依赖

<dependency>
            <groupId>org.whq</groupId>
            <artifactId>abc</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

刷新之后可以看到这个包已经有了

从用户目录下.m2\repository中删除这个包,可以再次尝试一次下载