此教程针对Linux系统,请提前安装好 Docker 和 JDK 推荐 JDK版本1.8+
查找想要下载的镜像
docker search sonatype
下载镜像
docker pull sonatype/nexus3
这里我们演示的版本为 sonatype/nexus3
创建文件(可忽略不创建直接启动)
在home下创建文件夹mkdir /home/nexus-data
和 mkdir /home/sonatype-work
设置权限
启动镜像
直接启动 docker run -d -p 8081:8081 --name nexus sonatype/nexus3
挂载文件 docker run -d -p 8081:8081 --name nexus -u root -v /home/nexus-data:/nexus-data -v /home/sonatype-work:/sonatype-work sonatype/nexus3
-u root 是为了让容器有读写文件的权限 如果因为挂载文件导致的镜像启动失败 则需要单独对文件进行权限赋予
通过命令 docker logs --follow nexus3
查看是否启动成功
访问系统
访问 ip:9081/nexus
第一次访问因为初始化系统的缘故会比较缓慢,需耐心等待。
登录
访问成功后,点击页面右上角Sign in。账号默认为admin,密码 在 /home/nexus-data/admin.password 该文件中,使用vi admin.password
进行查看密码并登录。第一次登录成功后会提示重新设置密码。设置密码后 admin.password文件会消失
若文件挂载失败
若文件挂载失败,没有找到admin.password文件,通过命令 docker exec -it nexu3 /bin/bash
进入容器内部,在根目录找到admin.password文件进行查看密码。
仓库类型介绍
点击Repository ->Repositories 系统已经给我建立了默认的仓库。新建新的仓库对比着默认的创建就可以了
项目 | 具体说明 |
---|---|
hosted | 本地存储。像官方仓库一样提供本地私库功能 |
proxy | 提供代理其它仓库的类型 |
group | 组类型,能够组合多个仓库为一个地址提供服务 |
值得注意的是 创建仓库时 有个 What type of artifacts does this repository store?
对应三个值分别是 Release(稳定) Snapshot(快照) Mixed(混合:包含两者)
这里是需要我们上传的 jar包版本后缀对应的 如果你的jar包名为 xxx.1.1.SNAPSHOT.jar 则不能上传到Release类型下的仓库
上传jar
在项目使用的 maven settings.xml 中 写入
<servers>
<server>
<id>对应仓库的name 例如 maven-release</id>
<username>用户名</username>
<password>密码</password>
</server>
</servers>
在pmx中写入
<distributionManagement>
<repository>
<id>同settings.xml中的servers->server->id对应的值 如:maven-release</id>
<url>http://100.196.149.18:8081/repository/maven-release/</url>
</repository>
</distributionManagement>
然后通过maven 命令 deploy 即可进行部署到对应的仓库中
引用jar包
先找到类型为group的仓库 ,进入编辑页面。在最下面 Group->Member repositories: 将左边需要引用的仓库选择到右边 ,这样我们在引用jar包的时候就可以只引用一个仓库,这个仓库会包含所引用其他仓库的所以jar包。
<repositories>
<repository>
<id>maven-release</id>
<url>http://139.196.149.18:8081/repository/acc-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
然后在引入改仓库中的jar包即可。
如何将jar包下所需的其他jar包同步到仓库中
这里我们要找到仓库类型为 proxy的仓库,将仓库下的镜像源改成国内的其他镜像,默认为 :https://repo1.maven.org/maven2/
我们改成阿里云的 https://maven.aliyun.com/repository/public
然后在项目的maven -> settings.xml 中写入:
<mirrors>
<!-- <mirror>-->
<!-- <id>public</id>-->
<!-- <mirrorOf>*</mirrorOf>-->
<!-- <name>public</name>-->
<!-- <url>https://maven.aliyun.com/repository/public</url>-->
<!-- </mirror>-->
<mirror>
<id>XXXX-public</id>
<mirrorOf>*</mirrorOf>
<name>XXXX-public</name>
<url>http://100.196.149.18:8081/repository/XXXX-public/</url>
</mirror>
</mirrors>
当我们通过该地址进行jar下载的时候 ,当前项目的所需的jar包就会同步到我们的仓库中