1.下载nexus
官网链接:Download
我下载的是nexus-3.40.1-01-unix.tar.gz。
2.nexus配置启动
创建nexus文件夹,将压缩包上传到文件夹并解压。
tar -zxvf nexus-3.40.1-01-unix.tar.gz
为了不占太多空间这里在解压之后删除掉了.gz压缩包。
3.进入nexus-3.40.1/bin文件夹
/usr/local/software/nexus/nexus-3.40.1-01/bin
4.编辑nexus.vmoptions文件
根据自己机器内存大小,适当配置内存。内存太小未来启动nexus会失败。
vim nexus.vmoptions
5.配置端口
默认端口为8081,如果需要在要在文件中配置端口。(如果不需改端口,此处可以忽略)
1.进入etc文件夹
2.查看nexus-default.properties文件
3.开放8081端口
[root@localhost etc]# firewall-cmd --add-port=8081/tcp --permanent
success
[root@localhost etc]# firewall-cmd --reload
success
6.运行nexus
1.启动nexus
运行命令./nexus start
7.查看nexus的运行状态
nexus-3.40.1 : 服务器文件夹,启动程序等。
sonatype-work: 工作空间,数据文件。
在浏览器中输入http://102.168.0.101:8081
8.查看管理员账户密码
1.进入sonatype-work\nexus3文件夹
2.查看管理员密码
cat admin.password
3.登录后修改密码
9.配置私有仓库
nexus中默认仓库
maven-releases (Version policy=Release)默认只允许上传不带SNAPSHOT版本尾缀的包,默认部署策略是Disable redeploy 不允许重复上传相同版本号信息的jar,避免包版本更新以后使用方无法获取到最新的包。
maven-snapshots (Version policy=Snapshot)只允许上传带SNAPSHOT版本尾缀的包,默认部署策略是Allow redeploy,允许重复上传相同版本号信息的jar,每次上传的时候会在jar的版本号上面增加时间后缀信息。
maven-central 中央仓库的拷贝,如果环境可以访问中央仓库,则可以获取到相关的包,否则没用
maven-public 仓库组,不是实际个一个仓库地址,只是将现有的组合到一次,可以通过它看到所属组内全部仓库的jar信息
创建自定义仓库
添加新建仓库到maven-public群组中
选中maven-public群组,之后访问maven-public就可以访问自己的私有仓库了。
添加仓库到群组maven-public群组中
10.批量上传本地文件到自定义仓库中
上传本地仓库内容到linux服务器
11.编辑批量上传脚本
在本地仓库上传的文件夹(maven-repository)下创建一个shell脚本,命名 localrepository.sh
1.创建脚本
touch repo.sh
2.编辑脚本
vim repo.sh
#!/bin/bash
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
12.添加权限
给脚本localrepository.sh添加执行权限
chmod +x localrepository.sh
13.导入本地仓库到nexus私有仓库
执行以下命令
./repo.sh -u nexus用户名 -p nexus密码 -r 仓库地址
./repo.sh -u admin -p 123 -r http://192.168.134.129:8081/repository/wnhz-repository/
14.项目中引用nexus库
在maven的conf/settings.xml中配置server
在maven中配置镜像
中央仓库的资源从阿里云访问,其它资源来自nexus私服。
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>nexus djs</name>
<url>http://192.168.0.101:8081/repository/maven-public/</url>
</mirror>
</mirrors>
私服访问地址从下图获取:
项目中配置发布管理
在项目的pom.xml文件中添加<distributionManagement>
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wnhz.nexus</groupId>
<artifactId>wnhz-nexus</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.13</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!--定义springboot的maven打包插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>wnhz-repository</id>
<url>http://192.168.198.128:8081/repository/wnhz-repository/</url>
</repository>
</distributionManagement>
</project>
部署项目
在maven中运行部署,部署(deploy)项目到私服。