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

基于【 Docker】五 || maven私服环境搭建-LMLPHP

3.创建maven私服仓库

点击repositories,点击Create repository

基于【 Docker】五 || maven私服环境搭建-LMLPHP

选择maven2(hosted),然后输入仓库名称(test-release)。在version policy中选择这个仓库的类型,这里选择release,在Deployment policy中选择Allow redeploy(这个很重要)

基于【 Docker】五 || maven私服环境搭建-LMLPHP

基于【 Docker】五 || maven私服环境搭建-LMLPHP

4.创建私服账号

创建用户

基于【 Docker】五 || maven私服环境搭建-LMLPHP

设置用户名,密码,权限等信息

基于【 Docker】五 || maven私服环境搭建-LMLPHP

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>
05-11 19:56
查看更多