下载安装
下载nexus
上传到linux服务器解压并重名名
nexus配置
进入nexus-3.40.1/bin文件夹
编辑nexus.vmoptions文件
根据自己机器内存大小,适当配置内存。内存太小未来启动nexus会失败。
vim nexus.vmoptions
配置端口
默认端口为8081,如果需要在要在文件中配置端口。(如果不需改端口,此处可以忽略)
-
进入etc文件夹
-
修改nexus-default.properties文件
运行nexus
启动nexus
运行命令**./nexus start**
开放linux的8081端口
-
检查系统开放的端口号
firewall-cmd --list-ports
-
添加8081端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
-
重新加载防火墙
firewall-cmd --reload
移动文件
创建新文件夹nexus,将nexus-3.40.1 和sonatype-work移入新文件夹。
nexus-3.40.1 : 服务器文件夹,启动程序等。
sonatype-work: 工作空间,数据文件。
查看nexus的运行状态
在浏览器中输入http://102.168.0.101:8081
修改管理员密码
-
查看管理员账户密码
-
进入sonatype-work\nexus3文件夹
-
查看管理员密码
-
-
修改管理员密码
-
浏览器登录nexus
-
修改密码
-
配置私有仓库
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信息
创建自定义仓库
选择maven2(hosted)
添加新建仓库到maven-public群组中
-
选中maven-public群组,之后访问maven-public就可以访问自己的私有仓库了。
-
添加仓库到群组maven-public群组中
批量上传本地文件到自定义仓库中
上传本地仓库内容到linux服务器
编辑批量上传脚本
在本地仓库上传的文件夹(maven-repository)下创建一个shell脚本,命名 localrepository.sh
-
创建脚本
touch localrepository.sh
-
编辑脚本
vim localrepository.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}/{} ;
添加权限
给脚本localrepository.sh添加执行权限
chmod +x localrepository.sh
导入本地仓库到nexus私有仓库
执行以下命令
./localrepository.sh -u nexus用户名 -p nexus密码 -r 仓库地址
项目中引用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>
私服访问地址从下图获取:http://192.168.0.101:8081/repository/maven-public/
项目中配置发布管理
在项目的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)项目到私服。