使用 Docker 和 Nexus 搭建私有 Maven 仓库
-
使用 Docker 启动 Nexus
-
首先确保服务器已经安装了 Docker,然后执行以下命令启动 Nexus(可以考虑写成
docker-compose.yml):# 创建存储数据的目录 mkdir data # 修改目录权限,否则 nexus 启动时会报错没有权限 chown -R 200 data # 启动 docker run -d -p 8081:8081 -v $PWD/nexus-data:/nexus-data --name nexus sonatype/nexus3 -
修改密码
访问:localhost:8081
默认管理员账号为 admin,默认密码在
$PWD/nexus-data/amdin.password第一次登录后有向导,完成密码修改和是否开启匿名访客权限
密码修改后,
$PWD/nexus-data/amdin.password会删除
-
-
配置 Nexus
-
创建仓库
Nexus 默认创建了四个 Maven 仓库,因此不需要手动去创建。
在
Administration>>Repository>>Repositories页面可以看到仓库列表:仓库名称 类型 格式 说明 maven-central proxy maven2 中央仓库 maven-releases hosted maven2 正式版仓库 maven-snapshots hosted maven2 测试版仓库 maven-public group maven2 仓库组,集合了其他三个仓库 -
关闭匿名访客权限
默认情况下匿名访客时可以看到仓库列表的,为了不泄露信息,需要关闭其访问权限。
在
Administration>>Security>>Anonymous页面,取消打勾Allow anonymous users to access the server并保存。 -
新建角色和用户
系统默认的
admmin账户权限太大,一般建议新建一个普通账户,并授予有限的权限。首先在Administration>>Security>>Roles页面新建一个角色,并授予以下的权限:nx-repository-view-*-*-browse nx-repository-view-maven2-*-*接着新建一个用户,授予该角色权限。
-
-
配置 Maven 并发布
修改文件
~/.m2/settings.xml,增加:<servers> <!-- 增加服务器账户和密码 mynexus --> <server> <id>mynexus</id> <username>user</username> <password>password</password> </server> </servers>修改
pom.xml文件:<repositories> <!-- 下载仓库使用 maven-public --> <repository> <id>mynexus</id> <url>http://localhost:8081/repository/maven-public/</url> </repository> </repositories> <distributionManagement> <!-- 发布正式版本仓库使用 maven-releases --> <repository> <id>mynexus</id> <url>http://localhost:8081/repository/maven-releases/</url> </repository> <!-- 发布测试版本仓库使用 maven-snapshots --> <snapshotRepository> <id>mynexus</id> <url>http://localhost:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>然后执行
mvn deploy部署项目,如果控制台打印出BUILD SUCCESS则表示发布成功,可以通过 http://localhost:8081/#browse/browse:maven-public 确认仓库上是否有新发布的代码包。