-
启动服务:
在此目录下执行:
mkdir nexus-data docker-compose up -d
使用默认的 docker-compose 配置, Nexus 的服务将会在 8081 端口监听,数据会被存储在当前目录下的
nexus-data
文件夹。 -
找到默认管理员密码:
docker exec -it nexus cat /nexus-data/admin.password
复制它。
-
打开 Nexus 主页 (默认是 http://localhost:8081 ),以管理员身份登录,账号 admin ,密码为刚才复制的。之后会提示更改默认管理员密码和是否允许匿名访问,选择不允许。
-
进入 仓库管理页面 ,可以看到已经有
maven-central
,maven-releases
,maven-snapshots
和maven-public
这几个 repo 。其中,maven-public
是一个包含了其它 repo 的 group 。 -
maven-central
类型是 proxy ,是 Maven **仓库的代理,具有缓存功能。将Remote storage
改为 https://maven.aliyun.com/repository/central (阿里云的镜像): -
maven-releases
和maven-snapshots
类型是hosted
,即该 Nexus 服务自己管理的 Maven repo 。可以作为团队的私有仓库。 -
创建具有 Maven 仓库读写权限的角色( Role ):在左侧
Security
菜单下的 Roles 页面 ,点击Create role
,在Privileges
里选上nx-repository-view-maven2-*-*
: -
创建一个公用的开发人员账户( User ):在左侧
Security
菜单下的 Users 页面 ,点击Create local user
,Roles
设置为刚才创建的角色:
TODO:
-
Blob
-
Privileges
-
Docker registry
在用户的 Maven 的配置文件 ~/m2/settings.xml
中:
-
在
servers
标签里,加入一个server
配置(用于 deploy 到私有仓库)。 -
在
mirrors
标签里,加入一个mirror
配置(用于下载私有 Maven Central 镜像和私有仓库的包)。
<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">
...
<servers>
<server>
<id>mycompany-maven</id>
<username>dev</username>
<password>testdev</password>
<!-- <privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase> -->
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
<mirrors>
<mirror>
<id>mycompany-maven</id>
<name>MyCompany Maven Mirror</name>
<mirrorOf>*</mirrorOf>
<url>http://repository.mycompany.com/repository/maven-public/</url>
</mirror>
</mirrors>
...
</settings>
在 Maven 项目的 pom.xml
中的 distributionManagement
标签里,加入 repository
和 snapshotRepository
配置:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
...
<distributionManagement>
<repository>
<id>mycompany-maven</id>
<name>MyCompany Maven Release Repository</name>
<url>http://repository.mycompany.com/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>mycompany-maven</id>
<name>MyCompany Maven Snapshot Repository</name>
<url>http://repository.mycompany.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
...
</project>
可以使用当前目录下的 my-app
项目来测试设置是否生效。修改 pom.xml
中 distributionManagement
标签下的 url 为实际值,然后执行:
mvn deploy
sed -i "" "s/1.0-SNAPSHOT/1.0/" pom.xml
mvn deploy
测试是否能成功从私有镜像下载依赖,以及部署到私有仓库(包括 releases 和 snapshots )。