文章目录
1. Maven私服
Maven私服就是本地仓库和中英仓库之间的桥梁,一般公司内部会搭建自己的私服
2. Maven私服安装
一般Maven私服使用Nexus服务器管理
我们这使用Docker下载
Docker镜像地址:sonatype/nexus3 - Docker Image | Docker Hub
2.1 下载Docker镜像
docker pull sonatype/nexus3:3.33.1
2.2 启动docker容器
先创建一个未映射的容器,把容器中的数据拷贝出来,否则直接挂在目录会报错
docker run -d --privileged=true -p 8081:8081 --name nexus --restart=always sonatype/nexus3:3.33.1
docker run -d --privileged=true -p 8081:8081 --name nexus --restart=always -e INSTALL4J_ADD_VM_PARAMS="-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m -Djava.util.prefs.userRoot=/some-other-dir" sonatype/nexus3:3.33.1
mkdir -p /docker/nexus/nexus-data
docker cp nexus:/nexus-data /docker/nexus/
chown -R 200 /docker/nexus/nexus-data
将容器内部/var/nexus-data目录挂载到主机/docker/nexus-data目录。
docker run -d --privileged=true -p 8081:8081 --name nexus -v /docker/nexus/nexus-data/:/nexus-data/ --restart=always -e INSTALL4J_ADD_VM_PARAMS="-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m -Djava.util.prefs.userRoot=/some-other-dir" sonatype/nexus3:3.33.1
--privileged=true 授予root权限(挂载多级目录必须为true,否则容器访问宿主机权限不足)
--name=名字 给你的容器起个名字
-p 宿主机端口:容器端口映射
-v 宿主机目录:容器目录 目录挂载
--restart=always 自动启动容器
--INSTALL4J_ADD_VM_PARAMS 调整内存,默认2G
2.3 登录nexus
访问http://ip:8081,maven私服启动稍微比较慢,等待1分钟左右。
登录账号admin,密码进入容器查看
docker exec -it nexus /bin/bash
bash-4.4$ cat /opt/sonatype/sonatype-work/nexus3/admin.password
之后可以重置密码
3. 创建私服仓库
3.1 Nexus 仓库类型
-
hosted
本地仓库,通常我们会用来部署自己的jar包到这一类型仓库,包含RELEASE和SNAPSHOT类型
-
proxy
代理仓库,用来代理远程的公共仓库,比如阿里云,用来缓存公网上的jar包
-
group
仓库组,用来合并多个hosted和proxy类型的层库,统一以一个地址暴露
3.2 Maven用到的仓库说明
-
maven-ventral
Maven中央仓库,默认是官方网站https://repo1.maven.org/maven2/可以修改为阿里云的国内镜像
-
maven-release
私服发型版本jar
-
maven-snapshots
私服快照版本jar
-
maven-public
仓库分组,吧上面三个仓库组合在一起对外提供服务
3.1 修改中央仓库地址为阿里云
登录maven私服,点击设置,选择Repositories,可以看到所有的仓库。
其中maven-central为默认中央仓库,我们需要把仓库地址修改为阿里云仓库地址https://maven.aliyun.com/repository/public
3.2 创建仓库
上述的三个库加上一个组,即可组合Release、snapshots和中央仓库,可以实现打包到私服,私服没有的,从公共仓库下载
也可以自己建立一套,MyReleases、MySnapshots、MyProxy、MyGroup
-
创建一个仓库,MyReleases,类型为maven2(hosted),release版本
-
创建一个仓库,MySnapshots,类型为maven2(hosted),snapshot版本
-
创建一个仓库,MyProxy,类型为maven2(proxy)
-
创建一个仓库,MyGroup,类型为maven2(group)
即可通过MyGroup地址统一暴露
4. 本地maven配置(全局配置)
4.1 在maven的settings.xml中配置私服用户名密码
在server中配置用户名、密码
<servers>
<server>
<id>MyMaven</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
4.2 配置拉取的私服地址
在mirrors中配置私服仓库,用来拉取jar包,填写统一的group仓库组地址
<mirrors>
<mirror>
<id>MyMaven</id>
<mirrorOf>*</mirrorOf>
<name>MyMaven</name>
<url>http://192.168.10.31:8081/repository/maven-public/</url>
</mirror>
</mirrors>
4.3 profiles设置私服仓库
在settings中的profiles中配置多个私服仓库
<profiles>
<!-- 配置默认的JDK版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<profile>
<id>MyMaven</id>
<!-- 远程仓库列表 -->
<repositories>
<repository>
<id>MyMaven</id>
<name>MyMaven</name>
<!-- 虚拟的URL形式,指向镜像的URL-->
<url>http://192.168.10.31:8081/repository/maven-releases/</url>
<layout>default</layout>
<!-- 表示可以从这个仓库下载releases版本的构件-->
<releases>
<enabled>true</enabled>
</releases>
<!-- 表示可以从这个仓库下载snapshot版本的构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!-- 插件仓库列表 -->
<pluginRepositories>
<pluginRepository>
<id>MyMaven</id>
<name>MyMaven</name>
<url>http://192.168.10.31:8081/repository/maven-snapshots/</url>
<layout>default</layout>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 激活的环境 -->
<activeProfiles>
<activeProfile>jdk-1.8</activeProfile>
<activeProfile>MyMaven</activeProfile>
</activeProfiles>
5. Idea上传下载私服
5.1 上传jar包到私服
设置私服地址
<distributionManagement>
<!-- 指定私服地址,发布的仓库地址,多个仓库根据仓库类型,自动上传到指定类型的仓库 -->
<repository>
<id>MyMaven</id>
<name>MyMaven</name>
<url>http://192.168.10.31:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>MyMaven</id>
<name>MyMaven</name>
<url>http://192.168.10.31:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
上传成功
查看发布版仓库中,已经有上传的了
4.2 从私服下载文件
在pom.xml中也可以配置私服,用于拉取私服
<!-- 配置远程仓库列表 -->
<repositories>
<!-- 自定义的私服 -->
<repository>
<id>MyRelease</id>
<name>MyRelease</name>
<url>http://192.168.10.31:8081/repository/maven-public/</url>
</repository>
</repositories>
<!-- 配置插件远程仓库列表 -->
<pluginRepositories>
<!-- 自定义的私服 -->
<pluginRepository>
<id>MyRelease</id>
<name>MyRelease</name>
<url>http://192.168.10.31:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
因为settings.xml中配置了全局的私服,所以这不用单独配置也可以