系列文章目录



文章目录

  • 系列文章目录
  • 前言
  • 一、docker搭建nexus
  • 二、创建步骤
  • 1.创建仓库
  • 2.快照仓库
  • 3.reslease仓库
  • 3.代理仓库
  • 3.公共中央仓库
  • 三、使用步骤
  • 1.repositories设置
  • 总结



前言

Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。


一、docker搭建nexus

  1. 拉取镜像
docker pull sonatype/nexus3
  1. 启动容器,这里有几种方式启动,大家可以参考。
#入门级启动
docker run -d -p 8081:8081 --name nexus3 sonatype/nexus3

#docker卷启动 使用 docker 卷。
#由于 docker 卷是持久的,因此可以专门为此目的创建一个卷。这是推荐的方法。
docker volume create --name nexus-data
#(创建的docker卷路径在/var/lib/docker/volumes/nexus-data)
docker run -d -p 8081:8081 --name nexus3 -v nexus-data:/nexus-data sonatype/nexus3

#挂载一个主机目录作为卷。这不是可移植的,因为它依赖于在主机上具有正确权限的现有目录
mkdir -p /some/dir/nexus-data && chown -R 200 /some/dir/nexus-data
docker run -d -p 8081:8081 --name nexus3 -v /some/dir/nexus-data:/nexus-data sonatype/nexus3

#也可以支持jvm参数启动
docker run -d -p 8081:8081 \
--name nexus3 --restart=always --privileged=true \
-e INSTALL4J_ADD_VM_PARAMS="-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -Djava.util.prefs.userRoot=/some-other-dir" \
sonatype/nexus3

启动完成之后直接浏览器访问ip:8081端口就可以

#查看docker数据卷
docker volume ls
 #删除没使用的数据卷(谨慎使用)
docker volume prune

用户的登录

账户为admin

docker启动nexus3报错 docker nexus部署_docker启动nexus3报错


进入容器内部

cat /nexus-data/admin.password

docker启动nexus3报错 docker nexus部署_java_02


初次登录之后,系统会提示你修改密码

docker启动nexus3报错 docker nexus部署_docker启动nexus3报错_03

二、创建步骤

1.创建仓库

分别创建四个仓库,注意类型为hosted的发行版仓库和快照仓库,proxy为代理仓库,group为公共中央仓库。

docker启动nexus3报错 docker nexus部署_后端_04

2.快照仓库

hosted改为Disable redeploy

docker启动nexus3报错 docker nexus部署_后端_05

3.reslease仓库

hosted改为allow redeploy

docker启动nexus3报错 docker nexus部署_docker启动nexus3报错_06

3.代理仓库

代理地址改成阿里云仓库地址

http://maven.aliyun.com/nexus/content/groups/public

docker启动nexus3报错 docker nexus部署_java_07

3.公共中央仓库

注意这里的顺序修改reslease—》snapshots----》proxy

docker启动nexus3报错 docker nexus部署_maven_08

三、使用步骤

1.repositories设置

配置这个,拉取jar会从nexus里面拉取,没有的会按照顺序从配置代理仓库中拉取

<repositories>
        <repository>
            <id>boss-maven-proxy</id>
            <name>boss-maven-proxy</name>
            <url>http://10.22.xx.xxx:8081/repository/boss-maven-proxy/</url>
        </repository>
        <repository>
            <id>releases</id>
            <name>Project Releases Repositories</name>
            <url>http://10.22.xx.xxx:8081/repository/boss-maven-release/</url>
        </repository>
        <repository>
            <id>snapshots</id>
            <name>Project Snapshots Repositories</name>
            <url>http://10.22.xx.xxx:8081/repository/boss-maven-snapshots/</url>
        </repository>
    </repositories>

项目的jar包发布
这里配置为发行仓库,和快照仓库。
maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载

<distributionManagement>
        <repository>
            <id>boss-nexus-release</id>
            <name>boss-nexus-release</name>
            <url>http://10.22.xx.xxx:8081/repository/boss-maven-release/</url>
        </repository>
        <snapshotRepository>
            <id>boss-nexus-snapshot</id>
            <name>boss-nexus-snapshot</name>
            <url>http://10.22.xx.xxx:8081/repository/boss-maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

maven的setting配置

<?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>F:\person\repository</localRepository>
	
	<servers>
		<!-- deploy release -->
		<server>
		  <!-- 私服仓库id -->
		  <id>boss-nexus-release</id>
		  <username>admin</username>
		  <password>xxxxx</password>
		</server>
		<!-- deploy snapshot -->
		<server>
		  <id>boss-nexus-snapshot</id>
		  <username>admin</username>
		  <password>xxxxx</password>
		</server>
		<!-- read-only: boss-nexus3 -->
		<server>
		  <id>boss-nexus-public</id> <!-- 对应mirror -> id -->
		  <username>admin</username>
		  <password>xxxxx</password>
		</server>
	</servers>
	
	<mirrors>
		<mirror>
		  <!--此处配置所有的构建均从私有仓库中下载 *代表所有,也可以写central -->
		  <id>boss-nexus-public</id>
		  <name>BOSS Maven Central repository</name>
		  <mirrorOf>*</mirrorOf>
		  <url>http://10.22.xx.xxx:8081/repository/boss-maven-public/</url>
		</mirror>
	</mirrors>
  
	<profiles>
		<profile>
		  <id>boss-nexus3-dev</id>
		  <repositories>
			<repository>
			  <id>boss-maven-public</id>   <!-- 1111, 这里的id需和2222那里的一样,在同一个profile里  -->
			  <url>http://10.22.xx.xxx:8081/repository/boss-maven-public/</url>
			  <releases>
				<enabled>true</enabled>
			  </releases>
			  <snapshots>
				<enabled>true</enabled>
			  </snapshots>
			</repository>
		  </repositories>
		  <pluginRepositories>  <!-- 这里是插件仓库地址 -->
			<pluginRepository>
			  <id>boss-maven-public</id>  <!-- 2222, 这里的id需和1111那里的一样,在同一个profile里  -->
			  <url>http://10.22.xx.xxx:8081/repository/boss-maven-public/</url>
			  <releases>
				<enabled>true</enabled>
			  </releases>
			  <snapshots>
				<enabled>true</enabled>
			  </snapshots>
			</pluginRepository>
		  </pluginRepositories>
		</profile>
	</profiles>
	
	<activeProfiles>
		<!-- 启用id为nexus3的profile的配置 -->
		<activeProfile>boss-nexus3-dev</activeProfile>
	</activeProfiles>
  
</settings>

项目当中执行mvn deploy会将自己的包发布到对应的仓库当中。当然也可以餐区上传的方式进行上传。

docker启动nexus3报错 docker nexus部署_maven_09


总结

小编自己写的所有文章希望对你有所帮助,更是在自我学习的过程中学习记录的体现,愿我们共同进步。