- 应用场景
1. 可以将公司内部的项目部署到私服上(局域网),以便供其他依赖项目使用。
2.为了节省带宽和时间。当本地Maven项目需要下载构件时,先去私服请求,如果私服没有,则再去远程仓库请求,从远程仓库下载构件后,把构件缓存在私服上。这样,及时暂时没有Internet链接,整个项目还是可以正常使用的。也降低了中央仓库的负荷
- 环境搭建
- 安装docker
参考文档: https://blog.csdn.net/xiaobo5264063/article/details/100939821
- 下载一个nexus3的镜像
docker pull sonatype/nexus3
- 启动并挂载
将容器内部/var/nexus-data挂载到主机/root/nexus-data目录
估计等待1至2分钟docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
- 访问
// 查看是否启动成功 docker logs -f 容器id // 关闭防火墙 systemctl stop firewalld.service // 访问链接 http://ip:8081
- 获取密码
默认的账号:admin 密码:admin123这里是无法登录,因为Nexus3及后续的版本不支持默认密码: admin123 了,采用了随机密码,如何查看登录密码呢?// 查看启动的Nexus3容器id docker ps // 进入容器 docker container exec -it 容器id /bin/bash // 进入目录 cd / cd nexus-data // 查看初始化的随机密码 cat admin.password
如上图所示"9ff950ef-dd81-458a-a1ab-99ead5d1215f"就是随机生成的登录密码 - 登录
账号:admin 密码:9ff950ef-dd81-458a-a1ab-99ead5d1215f
登录成功后,会提示修改密码,照着操作就行了!
安装完成了!!!
- 如何修改maven私服的远程仓库地址
- 登录nexus,点击'设置'-->'Repositories',找到'maven-central'中'proxy'点击进入
- 找到'Proxy'-->'Remote storage:',修改保存
可以修改成阿里的仓库地址
- 如何上传或引入项目到maven私服
这里分为五步: 1.创建仓库 2.创建用户 3.配置maven 4.上传项目 5.引入项目
- 创建仓库
- 登录nexus,点击'设置'-->'Repositories'-->'Create repository'
- 这里选择'maven2 (hosted)', 进入
- 创建仓库
输入仓库名称(自定义)
在'Hosted'-->'Deployment policy:'下选择'Allow redeploy' , 其他的默认就行
Release: 版本类型,和你本地要一致
点击页面最下方的'Create repository',创建仓库 - 查看仓库地址
在列表处,点击仓库名称进入, 在URL这里就是我们的仓库地址: http://192.168.2.126:8081/repository/pitch-release/这里仓库就创建完成了!!!接下来创建用户
- 创建用户
- 创建用户
点击'设置'-->'Users'-->'Create local user' - 设置用户信息
输入'ID'、'First name'、'Last name' 项,自定义,这里我设置的都是pitch
输入'Email'
输入 'Password'、'Confirm password'项,密码和确认密码
选择'Status'项,选择'Active'激活状态
选择'Roles'项,选择'nx-admin'和'nx-anonymous'
点击'Create local user',保存用户 - 查看用户
使用账户:pitch ,也可以登录我们的nexus
这里用户创建完成了
- 上面步骤已经完成了在nexus中完成了仓库和用户的创建,记住如下信息
接下来就是就是我们本地的配置了// pitch-release仓库地址 http://192.168.2.126:8081/repository/pitch-release/ // 用户id pitch // 用户名称 pitch // 用户密码 123456
- 配置maven
- 找到你本地maven的settings.xml 文件
- 配置settings.xml 文件,添加配置信息如下:
<servers> <!--配置私服的id、账户、密码--> <server> <id>pitch</id> <username>pitch</username> <password>123456</password> </server> </servers>
- 上传项目
- 创建springboot项目,在pom.xml中添加如下配置
注意事项:<!--注意限定版本一定为RELEASE,因为上传的对应仓库的存储类型为RELEASE --> <distributionManagement> <repository> <!--此名称要和.m2/settings.xml中设置的ID一致 --> <id>pitch</id> <!--指定仓库地址 --> <url>http://192.168.2.126:8081/repository/pitch-release/</url> </repository> </distributionManagement> <build> <plugins> <!--发布代码Jar插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> </plugin> <!--发布源码插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
项目的版本一定不能是<version>1.0-SNAPSHOT</version> 不能含有SNAPSHOT
可以改成<version>1.0-RELEASE</version>或<version>1.0</version> - 打包
// cmd进入项目路径,打包,mvn deploy:将jar包打入maven私服仓库 mvn deploy
- 登录nexus查看
点击'浏览器图标'-->'maven'
这里就打包上传成功了!!!
- 引入项目
- 创建另外一个项目,在pom.xml中配置如下:
这里如果能够成功引入刚刚上传到私服nexus_upload项目的依赖,表示成功!!!<dependencies> <!--引入刚刚上传到私服的项目依赖--> <dependency> <groupId>com.basic</groupId> <artifactId>nexus_upload</artifactId> <version>1.0-RELEASE</version> </dependency> </dependencies> <!---配置私服信息--> <repositories> <repository> <id>pitch</id> <url>http://192.168.2.126:8081/repository/pitch-release/</url> </repository> </repositories>
因为2个项目是同一个maven,避免测试下载是本地的缓存,可以先清缓存
完成!!!
- 如何判断文件是否发生改变
如何知道一个文件是否改变了呢?当然是用比较文件hash值的方法,文件hash又叫文件签名,文件中哪怕一个bit位被改变了,文件hash就会不同。比较常用的文件hash算法有MD5和SHA-1。