使用Docker基于Nexus3快速搭建Maven私有仓库
- 2019 年 11 月 22 日
- 筆記
Maven的基础示意图

Maven的基础示意图
环境搭建
- 准备工作 docker安装 参考本人另一篇 Docker初识 — 搭建编程环境
- 下载
Nexus3镜像
docker pull sonatype/nexus3

Nexus3镜像
- 创建
nexus的挂载文件夹 文件夹的目录可以根据个人情况指定,如果不想挂载文件夹,那么可以忽略这一步(记住:忽略之后,下面的指令把-v的那部分去掉),资源就由容器自行去管理,为了数据的安全性,建议挂载操作
mkdir /usr/local/nexus-data && chown -R 200 /usr/local/nexus-data
- 启动容器
docker run -d -p 8081:8081 --name nexus -v /usr/local/nexus-data:/nexus-data --restart=always sonatype/nexus3
启动容器并将宿主机/usr/local/nexus-data(目录需要提前创建)目录映射到容器/nexus-data目录,这样就可以保存容器产生的文件了,具体请百度查询docker相关信息。 安装完成。
系统配置
浏览器地址栏输入IP:8081进入nexus3管理界面。

nexus管理首页
点击右上角的登录,登录管理,admin密码首次登录需要去指定位置查看随机生成的密码。

登录窗口
可以在登录窗口上看到密码的指定存放位置为/nexus-data/admin.password,因为该目录已经映射为宿主机的/usr/local/nexus-data目录。所以直接到/usr/local/nexus-data目录下查看文件admin.password。

查看admin密码
可以看到admin的密码为09eac30e-b2f9-437d-9770-b35202ee43b7,这时就可以登录admin用户了,登录后nexus会要求重新设置新的admin密码。
- 为Nexus配置阿里云代理仓库 Nexus默认远程仓库为
https://repo1.maven.org/maven2/,慢死,还常连不上。

默认代理仓库

默认代理仓库地址
添加阿里云代理仓库:

添加仓库

选择类型

设置仓库信息
其他默认,翻到最下面,点create repository;

保存信息
显示 Ready to Connect就OK了:

image
把aliyun添加到仓库组中,记得把aliyun排在central上边:

设置代理仓库顺序

image
- 创建一个用户,用于上传jar包到仓库

用户设置

添加用户
最后点击保存用户。 到此Nexus的私有仓库基本设置完毕。
设置本地的maven到私有仓库
- 配置maven信息

maven目录结构
进入conf文件夹,找到settings.xml文件打开:
- 找到servers节点,设置刚刚创建好的用户,比如我这里的用户为:
<server> <id>public</id> <username>zihui</username> <password>zihui123456</password> </server>
- 找到mirrors节点,设置仓库地址:
<!--内部maven--> <mirror> <id>central</id> <name>Central Repository</name> <url>http://10.168.1.118:8081/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror> <!-- 阿里云仓库 --> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <!-- 中央仓库1 --> <mirror> <id>repo1</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo1.maven.org/maven2/</url> </mirror> <!-- 中央仓库2 --> <mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> </mirror>
- 最后找到profiles节点:
<profile> <id>maven-public</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> <repositories> <repository> <id>nexus-public</id> <url>http://10.168.1.118:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories> </profile>
最后保存文件。
至此maven的基本设置就完成了。
设置项目的pom.xml文件,用于上传私有jar到私有仓库
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <!--发布代码Jar插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <!--发布源码插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <phase>install</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <distributionManagement> <repository> <!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 --> <!--此仓库对应的为RELEASE版本的jar--> <id>public</id> <url>http://10.168.1.118:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 --> <!--此仓库对应的为SNAPSHOT版本的jar--> <id>public</id> <url>http://10.168.1.118:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
最后使用deploy发布属于自己的jar到自己的私有仓库。

发布jar包


