基于docker的maven私服搭建

环境准备

ubuntu 20.0操作系统

搭建nexus3 Maven私服

拉取镜像并启动容器

docker run -d --name nexus3 \
 --restart=always \
-p 18081:8081 \
-v /mnt/d/dockerv/nexus3/nexus-data:/nexus-data \
sonatype/nexus3
注:1、nexus-data中的所有文件会映射到 指定的宿主机文件夹种,所以需要打开 /mnt/d/dockerv/nexus3/nexus-data 这个文件夹的权限 直接设置777
    2、本地没有镜像会拉取最新的镜像
    3、需要完全启动后才能访问,可通过docker logs nexus3 查看 出现Started Sonatype Nexus OSS 3.28.1-01 就是启动成功(我第一次在本地虚拟机中搭建的,浏览器访问18081发现访问不了,后来重启了一下虚拟机发现好了可以访问了,具体需要后续研究下)

相关设置

1、连接后点击登陆时会提示初始密码的位置(旧版本默认密码为admin123)
/mnt/d/dockerv/nexus3/nexus-data/admin.password
查看此文件 填入密码就能登陆成功,登陆成功后会提示改新密码

Maven向私服推包与下载

推包

mvn deploy:deploy-file -Dfile="dlanqi.core.mysql-1.0.9.jar" -DgroupId="dlanqi.core.mysql" -DartifactId="dlanqi.core.mysql" -Dversion="1.0.9" -Dpackaging=jar -Durl="http://192.168.110.106:18081/repository/private-release/" -DrepositoryId="private-release"
Dfile:包所在的本地路径
Durl:需要填发布的远程仓库路径
DrepositoryId:远程仓库的id

下载包(本地maven setting配置)

设置maven的settings.xml(详细说明),使本地仓库可以推送包和访问包

<?xml version="1.0" encoding="UTF-8"?>
<settings>
	<localRepository>D:\Apache\apache-maven-3.6.3\repository</localRepository>
	<interactiveMode>true</interactiveMode>
	<offline>false</offline>
	<mirrors>
		<mirror>
			<id>dlanqi.core</id>
			<name>dlanqi maven</name>
			<url>http://192.168.110.106:18081/repository/private-release/</url>
			<mirrorOf>private-release</mirrorOf>
		</mirror>
		<mirror>
			<id>alimaven</id>
			<name>aliyun maven</name>
			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
			<!-- <mirrorOf>central</mirrorOf>  -->
			<mirrorOf>*</mirrorOf>
		</mirror>
	</mirrors>
	<profiles>
		<profile>
			<id>development</id>
			<activation>
				<activeByDefault>true</activeByDefault>
				<jdk>1.8</jdk>
			</activation>
			<repositories>
				<repository>
					<id>private-release</id>
					<url>http://192.168.44.139:18081/repository/private-release/</url>
				</repository>
				<repository>
					<id>private-snapshot</id>
					<url>http://192.168.44.139:18081/repository/private-snapshot/</url>
				</repository>
			</repositories>
		</profile>
	</profiles>
	<activeProfiles>
		<activeProfile>development</activeProfile>
	</activeProfiles>
	<servers>
		<server>
	       <id>private-release</id>
	       <username>admin</username>
	       <password>123456</password>
		</server>
		<server>
	       <id>private-snapshot</id>
	       <username>admin</username>
	       <password>123456</password>
		</server>
	</servers>
</settings>
详细说明:
localRepository:本地仓库的路径
mirrors: 配置远程库 mirrors中的id为远程登陆库中的repository的id
profile: 配置远程库 profile中的id为自己命名的配置id
activeProfiles:激活profile中的id对应的配置
server: 远程私服的各仓库的登陆用户名和密码(用户名和密码在nexus中自己创建,并分配角色)

Nexus简介及仓库介绍

一、Nexus的作用

指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。

二、Nexus仓库

一般用到的仓库种类是hosted、proxy。Hosted代表宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动、比如商业软件jar包。Proxy代表代理远程的仓库,最典型的就是Maven官方中央仓库、JBoss仓库等等。如果构建的Maven项目本地仓库没有依赖包,那么就会去这个代理站点去下载,那么如果代理站点也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。 代理站点下载成功后再下载至本机。

hosted   类型的仓库,内部项目的发布仓库,需要添加到maven-public中
releases 内部的模块中release模块的发布仓库
snapshots 发布内部的SNAPSHOT模块的仓库
3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
proxy   类型的仓库,从远程中央仓库中寻找数据的仓库
        注:意味着可以代理阿里云的,或者其它的远程库,然后本地就不需要配置阿里云的库了,不过回把阿里云的下载到私服里占空间
group   类型的仓库,组仓库用来方便我们开发人员进行设置的仓库

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值