想了解Linux安装Nexus3可以看官方文档,这里说一下docker的方式如何安装配置。

安装Nexus

  • 搜索nexus 镜像
  • nexus3配置docker私库 nexus3 docker本地仓库_xml

  • 拉取镜像
docker pull sonatype/nexus3
  • 查看镜像是否拉取下来
  • nexus3配置docker私库 nexus3 docker本地仓库_maven_02

  • 创建nexus的挂载地址并授权
# 创建挂载地址
mkdir /usr/local/nexus
# 给文件夹授权
chmod chmod -R 777 /usr/local/nexus 
# 后台运行nexus并挂载出来
docker run -d -p 8081:8081 --name nexus3 -v /usr/local/nexus:/nexus-data sonatype/nexus3
  • 访问Nexus(默认账号:admin,密码在admin.password文件里面)
  • nexus3配置docker私库 nexus3 docker本地仓库_nexus3配置docker私库_03

配置nexus

  • 这些仓库默认就会存在的,你可以直接使用这些仓库,或者修改一下也可以。为了配置自己的仓库我们需要先删掉自带的仓库。
  • nexus3配置docker私库 nexus3 docker本地仓库_xml_04

  • Blob Stores介绍
    repositor是需要以Blob格式存储的。默认的Blol Stores是基于文件系统的,你可以把它理解为一个目录
    可以通过Repository > Blob Store来管理存储媒介,可以看到下面的默认存储名default,类型File的Blob Store

    Blob Stores参数如下:

参数

含义

Name

Blob Stores的名称,是唯一的

Type

类型,一般为File

State

状态

Blob count

Blob数目

Total size

现在该存储目录的大小

Available space

可用的空间,就是存储目录所在分区的磁盘剩余空间

  • 新建Blob Store
    点击Repository > Blob Store > Create blob store
  • Type: 这个有FileS3两个选项,这里选File就行。
  • Name: 名字随便起吧,我的叫aen-blob
  • Enable Soft Quota: 这个是限制目录的大小。这边就不限制了。你要是限制的话就勾上并填入上限的条件和限制的值就好了。
  • Path:就是个路径,在填入Name的时候就会自动生成

最后点击Create blob store就好了

  • 创建hosted类型的仓库
    这个仓库主要放一些自己封装的工具类,自己手动构建上传的包,或者中央仓库找不到的包
    hosted有两种类型的maven仓库分别为snapshotrelease,那么该如何区分了?
    snapshot:顾名思义快照的意思,所以一般放一些不稳定的库,一天能修改好几次代码的库。
    release:公开,发行。所以这个一般放的都是比较稳定的发行版本
  • 创建release发行库
    点击Repository > Repositories > Create repository,选择maven2(hosted)。
  • Name: 随便起一个名字吧,maven-releases-aen
  • Online: 勾选,设置这个仓库是在线还是离线
  • Maven2:

Version Policy: 版本策略,三个选择分别为:
Release:正式版本
Snapshot:快照版本
Mixed:混合模式
这里选择Release

Layout Policy:布局策略
Strict:严格
Permissive:宽松
这里选择默认的Strict

  • Storage:
    Blob store:选择此仓库使用的Blob存储,这里选择之前创建的aen-blob。
    Strict Content Type Validation:验证上传内容格式,这里不勾选。
  • Hosted:

Deployment Policy:部署策略,三个选择分别为:
Allow Redeploy:允许重新部署
Disable Redeploy:禁止重新部署
Read-Only:只读

  • 因为是release发行库,这里选Disable Redeploy
  • nexus3配置docker私库 nexus3 docker本地仓库_maven_05

  • 创建snapshot快照库
    和创建release发行库一样,点击Repository > Repositories > Create repository,选择maven2(hosted)。
  • nexus3配置docker私库 nexus3 docker本地仓库_apache_06

  • 创建一个代理(proxy类型) 仓库
    点击Repository > Repositories > Create repository,选择maven2(proxy)。
  • Proxy: http://maven.aliyun.com/nexus/content/groups/public
  • 看上图,其它的都是默认设置
  • 创建一个组(group类型)仓库
    点击Repository > Repositories > Create repository,选择maven2(gruop)。
  • nexus3配置docker私库 nexus3 docker本地仓库_nexus3配置docker私库_07

组里里面顺序建议阿里云的代理仓库放第一,因为maven代理仓库下载顺序是从上往下的,建议将速度快的仓库放在最前面。

验证测试

  • 假装你们都有jdkmaven环境了,修改maven里面的设置比如我的D:\apache\apache-maven-3.5.4\conf\settings.xml。记得备份一下这个文件不然修改错了就麻烦了。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!--本地仓库地址-->
    <localRepository>D:\m2\repository</localRepository>
 
	<pluginGroups>
	
	</pluginGroups>
  
	<proxies>
	
	</proxies>
  
	<servers>
		<server>
			<id>nexus-aen</id>
			<username>admin</username>
			<password>Nexus2020</password>
		</server>
		<server>
			<id>releases</id>
			<username>admin</username>
			<password>Nexus2020</password>
		</server>
		<server>
			<id>snapshots</id>
			<username>admin</username>
			<password>Nexus2020</password>
		</server>
	</servers>
  
	<mirrors>
	   <mirror>
	   	<id>nexus-aen</id>
	      <name>internal nexus repository</name>
	      <!--镜像采用配置好的组的地址-->
	      <url>http://192.168.31.236:8081/repository/maven-public-aen/</url>
	      <mirrorOf>!internal.repo,*</mirrorOf>
	   </mirror>
	</mirrors>
  
	<profiles>
	   <profile>
			  <!--ID用来确定该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>nexus-pro</id>
	   <!-- 远程仓库列表 -->
	  <repositories>
		<repository>
		  <id>nexus</id>
		  <name>Nexus Central</name>
		 <!-- 虚拟的URL形式,指向镜像的URL-->
		  <url>http://192.168.31.236:8081/repository/maven-public-aen/</url>
		  <layout>default</layout>
		 <!-- 表示可以从这个仓库下载releases版本的构件-->  
		  <releases>
			<enabled>false</enabled>
			<updatePolicy>always</updatePolicy>
		  </releases>
		 <!-- 表示可以从这个仓库下载snapshot版本的构件 -->  
		  <snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
		  </snapshots>
		</repository>
	  </repositories>
	  
	   <!-- 插件仓库列表 -->
	  <pluginRepositories>
		<pluginRepository>
		  <id>nexus</id>
		  <name>Nexus Central</name>
		  <url>http://192.168.31.236:8081/repository/maven-public-aen/</url>
		  <layout>default</layout>
		  <snapshots>
			<enabled>true</enabled>
			<updatePolicy>always</updatePolicy>
		  </snapshots>
		  <releases>
			 <enabled>true</enabled>
			 <updatePolicy>always</updatePolicy>
		  </releases>
		</pluginRepository>
	  </pluginRepositories>
	</profile>
	 </profiles>

  <activeProfiles>
  	<activeProfile>nexus-pro</activeProfile>
  	<activeProfile>jdk-1.8</activeProfile>
  </activeProfiles>
</settings>
  • 在需要打包的pom文件里面添加distributionManagement属性
<!-- 使用分发管理将本项目打成jar包,直接上传到指定服务器 -->
 <distributionManagement>
     <!--正式版本-->
     <repository>
         <!-- nexus服务器中用户名:在settings.xml中<server>的id-->
         <id>releases</id>
         <!-- 这个名称自己定义 -->
         <name>Release repository</name>
         <url>http://192.168.31.236:8081/repository/maven-releases-aen/</url>
     </repository>
     <!--快照-->
     <snapshotRepository>
         <!-- nexus服务器中用户名:在settings.xml中<server>的id-->
         <id>snapshots</id>
         <!-- 这个名称自己定义 -->
         <name>Snapshots repository</name>
         <url>http://192.168.31.236:8081/repository/maven-snapshots-aen/</url>
     </snapshotRepository>
 </distributionManagement>
  • 在打包上传之前我们先看一下maven-public-aen和maven-releases-aen库
  • 打包只需要点点点就好了
  • 现在我们再来看一下maven-public-aen和maven-releases-aen库

好了到这里我们的maven仓库就搭建测试完成了