目录
- 1、拉取镜像
- 2、启动镜像
- 3、登录系统
- 4、配置中央仓库
- 5、用户管理
- 6、创建仓库
- 7、代码推送
- 8、引入私有仓库包
1、拉取镜像
-
搭建版本:3.45.0
-
参考地址:https://hub.docker.com/r/sonatype/nexus3/tags
-
创建工作目录
# 挂载目录
mkdir /home/docker/nexus
# 授权
chmod 777 -R /home/docker/nexus
- 拉取镜像
# 拉取镜像
docker pull sonatype/nexus3:3.45.0
2、启动镜像
- 挂载启动Nexus
docker run -d --restart=always \
-p 8081:8081 \
-v /home/docker/nexus:/nexus-data \
--name=nexus3 \
sonatype/nexus3:3.45.0
- 8081: nexus3 默认服务端口
-
测试访问
测试地址:http://192.168.80.121:9091/
3、登录系统
nexus
的默认用户名为admin
默认密码位置在/home/nexus/sonatype-work/nexus3/admin.password
中,使用时直接复制即可,密码为一个uuid
;
cat /home/nexus/sonatype-work/nexus3/admin.password
在首次登录系统后,会进行一次密码修改
4、配置中央仓库
仓库地址:https://mirrors.huaweicloud.com/repository/maven/
5、用户管理
1、添加角色
2、创建用户
6、创建仓库
1、创建maven2(hosted)
类型仓库
创建仓库需要在登录后才能进行
点击
Create repository
,然后选择类型为maven2(hosted)
2、设置仓库属性
Maven 仓库分为两种:
Snapshot 快照仓库
和Release 发行仓库
。Snapshot 快照仓库用于保存开发过程中的不稳定 SNAPSHOT 版本,Release 发行仓库则用来保存稳定的 RELEASE 版本。
仓库名称设置为
lhz-release
(任意);将
Version policy
选择为Release
;将
Deployment policy
选择Allow redeploy
,允许部署和更新私服上的组件。
3、添加到仓库组
7、代码推送
1、POM文件自动推送
在本地Maven
的setting.xml
文件中,在<servers>
标签中添加Neuxs私服的配置,如下
<servers>
<!--nexus服务器-->
<servers>
<server>
<!--任意值-->
<id>lhz-nexus</id>
<!--私服的访问账户-->
<username>admin</username>
<!--私服的访问密码-->
<password>123321</password>
</server>
</servers>
在需要推送到Nexus仓库代码的POM.XML中,配置推送的仓库及地址
<!--dependencies下面-->
<distributionManagement>
<!--推送到release版本的仓库-->
<repository>
<!-- 需要和conf文件下pom文件server标签中id保持一致 -->
<id>lhz-nexus</id>
<name>nexus release</name>
<!--推送的仓库地址-->
<url>http://192.168.80.121:9090/repository/lhz-release/</url>
</repository>
</distributionManagement>
执行推送:
# maven推送命令
mvn clean deploy
# 推送项目中的部分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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>com.lhz.utils</groupId>
<artifactId>template-common-utils</artifactId>
<packaging>jar</packaging>
<version>2.0</version>
<modelVersion>4.0.0</modelVersion>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencies>
<dependency>
<groupId>eu.bitwalker</groupId>
<artifactId>UserAgentUtils</artifactId>
<version>1.21</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.22</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
......
......
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.8.1</version>
</dependency>
</dependencies>
<!--dependencies下面-->
<distributionManagement>
<!--推送到release版本的仓库-->
<repository>
<!-- 需要和conf文件下pom文件server标签中id保持一致 -->
<id>lhz-nexus</id>
<name>nexus release</name>
<url>http://192.168.80.121:9090/repository/lhz-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>
</plugins>
</build>
</project>
2、手动上传jar包到nexus
8、引入私有仓库包
配置如下:
<!--maven配置添加私服的镜像地址,settings.xml 文件中-->
<mirrors>
<!--如果http不被允许的话,将屏蔽下面的`maven-default-http-blocker`配置-->
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
<!--添加私服镜像-->
<mirror>
<id>lhz-nexus</id>
<!--任意值-->
<name>nexus repository</name>
<mirrorOf>*</mirrorOf>
<url>http://192.168.80.121:9090/repository/maven-public/</url>
</mirror>
</mirrors>
<!--需要拉取jar包的项目中,pom.xml 文件中-->
<repositories>
<repository>
<!--与mirror配置的一致-->
<id>lhz-nexus</id>
<name>Nexus Reposotory</name>
<url>http://192.168.80.121:9090/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>