docker run -d -p 8081:8081 --name nexus -v /srv/nexus/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
通过 docker logs -f nexus 查看启动日志,当出现 Started Sonatype Nexus OSS 说明启动成功,这时通过 http://ip:8081 即可访问
点击右上角Sign in进行登录,账号为 admin ,密码需要去镜像中查看
# 进入镜像 docker exec -it nexus bash # 查看密码,路径在登录框会提示,然后复制即可,登陆成功后会让你修改密码 cat /nexus-data/admin-password
Browse 即可查看你拥有的仓库啦 | 仓库名 | 描述 |
|---|---|
| maven-central | maven中央库,默认从 https://repo1.maven.org/maven... |
| maven-releases | 私库发行版jar |
| maven-snapshots | 私库快照(调试版本)jar |
| maven-public | 仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用 |
| 类型 | 描述 |
|---|---|
| group(仓库组类型) | 用于方便开发人员自己设定的仓库 |
| hosted(宿主类型) | 内部项目的发布仓库(内部开发人员,发布上去存放的仓库) |
| proxy(代理类型) | 从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径) |
| virtual(虚拟类型) | 虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用) |
Maven可直接从宿主仓库下载构件,也可以从代理仓库下载构件,而代理仓库间接的从远程仓库下载并缓存构件,为了方便,Maven可以从仓库组下载构件,而仓库组并没有实际的内容(下图中用虚线表示,它会转向包含的宿主仓库或者代理仓库获得实际构件的内容)
代理仓库(proxy) 、 宿主仓库(hosted) 、 仓库组(group) ,点击主页上面的小螺丝然后在选择 Repositories 进入仓库管理列表,然后就可以开始创建我们的仓库啦,选择仓库类型的时候一定要选择 maven2 我们使用阿里的中央仓库
这里可以创建 releases 和 snapshot 类型的仓库,这里就演示一种
为了演示,就随便创建个工具类玩,以下是目录结构
release 仓库,实际上应该同时要配置 snapshot 仓库,maven会判断版本后面是否带了 -SNAPSHOT ,如果带了就发布到snapshots仓库,否则发布到release仓库 <?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>
<groupId>com.gjing</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<distributionManagement>
<repository>
<!--ID可以随便写,但是要与maven的setting文件中一致-->
<id>releases</id>
<!--指向仓库类型为hosted(宿主仓库)的储存类型为Release的仓库---->
<url>http://你nexus仓库的IP:8081/repository/me-release/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</build>
</project>
一致 <servers>
<server>
<id>releases</id><!--对应项目pom文件中设置的-->
<username>admin</username>
<password>admin123</password>
</server>
</servers>
如果使用的是IDEA开发工具可以直接在右边工具栏Maven工具点击deploy,也可以直接在命令行进入本项目根目录进行 mvn deploy
这时nexus私服上也会出现我们的jar包
到此就发布成功啦
mirrors ,加上我们组仓库的 mirror ,url填写我们创建的组地址即可,id、name可以随便填写,mirrorOf可以和我写一样的 <mirrors>
<mirror>
<id>mynexus</id>
<name>myself nexus repository</name>
<url>http://xxx:8081/repository/me-group/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
只需要在其他项目中pom文件引入即可,成功引入且在项目中可以正常使用我们刚刚定义的工具类