1.Maven Nexus私服的原理
为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。当本地Maven项目需要下载构件时,先去私服请求,如果私服没有,则再去远程仓库请求,从远程仓库下载构件后,把构件缓存在私服上。这样,及时暂时没有Internet链接,由于私服已经缓存了大量构件,整个项目还是可以正常使用的。同时,也降低了中央仓库的负荷。
2.基于Docker搭建Maven私服
下载nexus3的镜像
docker pull sonatype/nexus3
将容器内部/var/nexus-data挂载到主机/data/nexus-data目录
docker run -d -p 8081:8081 --name nexus -v /data/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
注意:maven私服启动较慢,大约1分钟时间。
关闭防火墙,访问http://ip:8081 ,默认登陆账号 admin admin123
3.创建maven私服仓库
点击repositories,点击Create repository
选择maven2(hosted),然后输入仓库名称(test-release)。在version policy中选择这个仓库的类型,这里选择release,在Deployment policy中选择Allow redeploy(这个很重要)
4.创建私服账号
创建用户
设置用户名,密码,权限等信息
5.本地上次jar包到maven私服
在 maven的settings.xml配置文件中添加私服账号,用户名和密码为maven中分配的私服用户
<servers> <server> <id>kevin</id> <username>kevin</username> <password>kevin</password> </server> </servers>
创建一个maven工程,并且打包到maven私服,添加以下配置。
<!--注意限定版本一定为RELEASE,因为上传的对应仓库的存储类型为RELEASE --> <!--指定仓库地址 --> <distributionManagement> <repository> <!--此名称要和.m2/settings.xml中设置的ID一致 --> <id>kevin</id> <url>http://192.168.22.7:8081/repository/kevin-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>
执行命令:mvn deploy,打包上传到maven私服
6.测试依赖jar包
<dependencies> <dependency> <groupId>com.kevin</groupId> <artifactId>kevin-test</artifactId> <version>0.0.1-RELEASE</version> </dependency> </dependencies> <repositories> <repository> <id>kevin</id> <url>http://192.168.22.7:8081/repository/kevin-release/</url> </repository> </repositories>