拉取镜像
docker pull sonatype/nexus3
创建挂载文件夹,首次启动,注意 /data/nexus3 目录权限需要修改为 200:200,对应容器内部的 nexus 用户,不然会因权限不足导致启动失败;8081 为网页端口,8082 为镜像上传下载端口
mkdir -p /data/nexus3 chown -R 200:200 /data/nexus3
创建容器
docker run -d -p 8981:8081 -p 8982:8082 --name nexus \ --restart=always --privileged=true \ -e NEXUS_CONTEXT=nexus -e "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs" \ -v /data/nexus3:/nexus-data sonatype/nexus3:latest
INSTALL4JADDVM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m 指定 nexus 的启动内存,否则 nexus 需要 2G 以上内存才能启动。
docker logs -f nexus docker ps -a|grep nexus
使用 docker logs -f nexus 查看日志,运行到这里 nexus 就启动成功了
查询 admin 的密码
docker exec -it nexus /bin/bash cat /nexus-data/admin.password
e7ba325d-441c-45e3-9982-164138d56194 即为admin的密码
浏览器访问
http://192.168.100.129:8981/
第一次登录会要求修改密码
是否允许用户匿名访问
将私服配置里中央仓库的代理仓库路径更新为阿里云仓库提供的代理地址:http://maven.aliyun.com/repository/central 这样一来可以更快速地访问在中央仓库上所需要的依赖和插件。
其他保持默认,然后创建代理仓库。
其他保持默认,然后创建仓库。
其他保持默认,然后创建仓库。
其他保持默认,然后创建仓库。
添加一个 Role ID 为 developer 的自定义角色, 并且只添加自定义仓库的使用权限,删除操作除外。
这里我们创建一个 developer 的用户。
有了私服和用于开发的账号,我们就需要在本地 Maven 配置文件 setting.xml 进行关联。
设置 server 账户信息:
设置私服仓库地址:(这里的地址,可以通过 Nexus 后台上仓库页面的 cpoy 按钮自动复制得到)
配置本地仓库地址
配置私库,这里我们只填一个公共仓库就可以了,因为前面配置 public 的时候我们把 release、snapshot 和阿里的仓库都加到公共仓库里面了。
激活配置
<?xml version="1.0" encoding="UTF-8"?> <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"> <localRepository>E:\Maven_Local_Repository</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <servers> <server> <id>wxhntmy-central</id> <!-- 要访问的仓库的ID --> <username>developer</username> <!-- 要访问的仓库的用户名 --> <password>developer</password> <!-- 要访问的仓库的用户密码 --> </server> <server> <id>wxhntmy-snapshot</id> <username>developer</username> <password>developer</password> </server> <server> <id>wxhntmy-release</id> <username>developer</username> <password>developer</password> </server> <server> <id>wxhntmy-public</id> <username>developer</username> <password>developer</password> </server> </servers> <mirrors> </mirrors> <profiles> <!-- 全局JDK1.8配置 --> <profile> <id>jdk-1.8</id> <activation> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.test.skip>true</maven.test.skip> <maven.javadoc.skip>true</maven.javadoc.skip> </properties> </profile> <!-- Nexus私服配置 --> <profile> <id>my-nexus</id> <repositories> <repository> <id>wxhntmy-public</id> <url>http://192.168.100.129:8981/repository/wxhnym-public/</url> </repository> </repositories> </profile> </profiles> <!-- 激活配置 --> <!-- 测试结果: 影响下载顺序的是profiles标签的配置顺序(后面配置的my-nexus仓库先下载), 而不是activeProfiles的顺序 --> <activeProfiles> <activeProfile>jdk-1.8</activeProfile> <activeProfile>my-nexus</activeProfile> </activeProfiles> </settings>
默认激活的配置
点击下载所有依赖
可以看到项目依赖已经缓存到 maven 私服了。
配置私服仓库
<distributionManagement> <!-- 发布版本仓库 --> <repository> <!-- 这里的id要和maven的settings.xml配置的server的id一样 --> <id>wxhntmy-release</id> <url>http://192.168.100.129:8981/repository/wxhntmy-release/</url> </repository> <!-- 快照版本仓库 --> <snapshotRepository> <!-- 这里的id要和maven的settings.xml配置的server的id一样 --> <id>wxhntmy-snapshot</id> <url>http://192.168.100.129:8981/repository/wxhntmy-snapshot/</url> </snapshotRepository> </distributionManagement>
解释下这2个版本仓库:
如果pom文件中的version标签中是RELEASES则会发布到稳定版本仓库,如果为SNAPSHOT则发布到快照版本仓库中。
查看上传的jar,我们刚才上传的是 snapshot 版本。
jar已经上传成功
还有jar的用法
good job