Nexus3部署、配置+SpringBoot项目Demo

Docker部署Nexus

搜索Nexus3镜像:[root@localhost ~]# docker search nexus

拉取Nexus3镜像:[root@localhost ~]# docker pull sonatype/nexus3

启动Nexus3前查看虚拟机端口是否被占用:[root@localhost ~]# netstat -nultp

通过Docker Hub查看安装步骤

 添加docker自启动服务,具体启动命令如下:

docker run -d -p 8081:8081 --restart=always --name nexus sonatype/nexus3

当然也可以通过挂载宿主机方式安装,按需在网上找一些路径。到此安装结束了,登录地址如下:

http://192.168.56.100:8081/

第一次登录需要输入admin密码:

命令行登录容器内部: [root@localhost ~]# docker exec -it af765874d009 /bin/bash

cat /nexus-data/admin.password 查看密码。登录之后修改一下密码即可。

配置

仓库-存储配置

导航至 Repository-->Blob Stores,配置对象存储。

default是系统自带默认的,要注意的是这两个存储都需要设置大小限制,否则很容易把硬盘撑爆。

仓库-清理策略

导航至 Repository-->Cleanup Policies,配置存储清理策略。

仓库-仓库配置

导航至 Repository-->Repositories,配置仓库。

仓库有三种类型,如下:

  • proxy,代理仓库,也就是对外部仓库的代理,这个仓库是只读的,并且可以缓存。
  • hosted,托管仓库,也就是所谓私库了,可以上传包到这个仓库。
  • group,仓库组,这是一个容器,它可以包含多个proxy,hosted或其他group仓库,它的作用就是让开发人员引用的时候只要填一个URL,这也是只读的。

proxy如下:

 hosted如下:

Release 正式版本的 jar 包, POM模块声明的version如果包含snapshot字样则发布到snapshots,否则发布到releases库。例如:<version>1.0.1</version>

Snapshot 测试版本 jar 包 ,POM模块声明的version如果包含snapshot字样则发布到snapshots,否则发布到releases库。例如:<version>0.0.1-SNAPSHOT</version>

 group仓库如下:

Nexus Maven配置说明

  <mirrors>
	 <!--
    <mirror>
		<id>aliyunmaven</id>
		<mirrorOf>*</mirrorOf>
		<name>阿里云公共仓库</name>
		<url>https://maven.aliyun.com/repository/public</url>
	</mirror>
	-->
	<mirror>
		<id>maven-public</id>
		<!--<mirrorOf>*</mirrorOf>-->
		<mirrorOf>central</mirrorOf>
		<name>maven-public</name>
		<url>http://192.168.56.100:8081/repository/maven-public/</url>
	</mirror>

  </mirrors>

Maven的mirrorOf配置

在 maven 的配置文件 setting.xml 中已经配置了 aliyun 仓库,配置如下:

<mirror>
	<id>aliyun maven</id>
	<name>aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>*</mirrorOf>
</mirror>

默认是所有的请求都会转到阿里云下载,但是有些依赖包又不在 aliyun 仓库,其实开发在pom.xml 是指定了依赖包的仓库地址的,因为以上的配置将所有依赖包的下载都拦截,转到了阿里云,关键就在于 mirroOf 的配置。

以下是关于 mirrorOf 字段的配置

* = 表示拦截所有请求,使用该仓库
external:* = 表示本地仓库的中没有的依赖才会使用该仓库 
central = 表示拦截去中央仓库的请求,使用该仓库
# setting.xml不做任何配置时就是使用的中央仓库,也就是maven官方仓库https://repo.maven.apache.org/maven2
*,!repo_id = 除repo_id这个依赖包外,其他依赖都是用该仓库
repo1,repo2 = 表示只有 repo1 和 repo2 的依赖包才会使用该仓库,会代替pom的配置

开发在 pom 中是配置了依赖包的指定仓库的,如下

<repository>
	<id>getui-nexus</id>
	<url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
</repository>

如果此时 getui-nexus 依赖包无法下载,报错 Cannot resolve com.gexin.platform:gexin-rp-sdk-http:4.1.1.4 ,修改 maven 配置文件。

<!-- 在maven安装目录下的conf/setting.xml -->
<mirror>
	<id>aliyun maven</id>
	<name>aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>*,!getui-nexus</mirrorOf>     <!-- 关注这条即可,与pom中的id对应 -->
</mirror>

此时再进行构建,下载 getui-nexus 依赖包则不会从阿里云仓库下载,会从项目的pom里面找仓库下载。

或者

<!-- 在maven安装目录下的conf/setting.xml -->
<mirror>
	<id>aliyun maven</id>
	<name>aliyun</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>central</mirrorOf>     <!-- 关注这条即可,与pom中的id对应 -->
</mirror>

Maven访问仓库顺序

本地仓库—>私服(profile)—>远程仓库(repository)—>镜像仓库(mirror)—>中央仓库(central)
简化一下范围,一共分为本地、私服、远程3中仓库类型,远程、镜像、中央仓库都属于时远程仓库优先级为 本地>私服>远程。

Demo提交仓库

利用Spring官网模板创建Springboot项目:

Springboot项目pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.14-SNAPSHOT</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.xuhuan</groupId>
	<artifactId>springboot-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	<distributionManagement>
		<repository>
			<uniqueVersion>false</uniqueVersion>
			<id>maven-releases</id>
			<name>maven-releases</name>
			<url>http://192.168.56.100:8081/repository/maven-releases/</url>
		</repository>
		<snapshotRepository>
			<uniqueVersion>false</uniqueVersion>
			<id>maven-snapshots</id>
			<name>maven-snapshots</name>
			<url>http://192.168.56.100:8081/repository/maven-snapshots/</url>
		</snapshotRepository>
	</distributionManagement>
</project>

最后清理,打包,发布到Nexus私服。

猜你喜欢

转载自blog.csdn.net/juanxiaseng0838/article/details/131832125