nexus是一款仓库管理软件,不仅可以针对Java生态的仓库,还包括Debian的apt,支持很多编程语言的仓库,例如,Go,Python,NPM等等。
在这里,我们主要说明Java的Maven仓库管理。
由于官网比较慢,这里也不推荐直接下载安装包安装。推荐使用Docker快速一键部署。
如果实在需要,点击我进入官网下载页面
安装本教程确保你已经安装了Docker
安装步骤
- 创建数据卷容器
docker volume create --name nexus-data
- 启动nexus容器
docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
设置相关密码
优秀配置
仓库设置
我们推荐的使用配置请求寻找顺序
代理仓库——本机仓库(分为release和snapshot)—— 中央仓库
原因:快,方便,使用代理加速下载中央仓库的依赖包,如果代理没有,一般你自己发布的依赖包没有推送到中央仓库,可以在本机快速找到,最后如果都没找到再去中央仓库找,因为代理仓库存在与中央仓库同步延时的可能。
新增阿里云仓库
点击创建仓库按钮 “Create repository”
仓库名称:aliyun-repository
选择格式:maven2
类型:proxy
阿里云代理镜像地址:http://test.server.daluu.com:8011/repository/aliyun-repository/
设置本机远程仓库地址
打开 maven-public,注意这是一个文件夹的形式,是聚合了一组仓库,可以配置优先级请求访问仓库
按照下面的参考配置
maven本地设置
以上配置好镜像仓库的设置之后,需要在本地电脑启用对接这个私有远程仓库。
打开maven安装地址,找到conf目录,编辑 setting.xml
找到
<!-- 配置Maven连接私服打包上传项目 -->
<server>
<id>releases</id>
<username>admin</username>
<password>520code.net</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>520code.net</password>
</server>
找到
<!-- 私服中已经包含了代理阿里云仓库 -->
<mirror>
<!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
<id>nexus</id>
<!--*指的是访问任何仓库都使用我们的私服-->
<mirrorOf>*</mirrorOf>
<!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 -->
<url>http://localhost:8011/repository/maven-public/</url>
</mirror>
找到
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<name>Nexus</name>
<url>http://test.server.daluu.com:8011/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<!-- 针对快照 实时更新,如果不设置,需要删除仓库版本或者建立新版本号才能更新到 -->
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Nexus</name>
<url>http://test.server.daluu.com:8011/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<!-- 针对快照 实时更新,如果不设置,需要删除仓库版本或者建立新版本号才能更新到 快照更新频繁,有时候不想更新版本号 -->
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
启动指定的配置
<!-- 配置了profile之后,需要打开配置,否则无用 -->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
以上是全局配置,在本机项目只要指定maven的这个配置文件就会生效
本地项目pom设置
项目发布到远程仓库
如果你自己开发了一个框架,需要推送到远程仓库,给其他项目使用,需要在项目的父pom文件增加如下配置:
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://test.server.daluu.com:8011/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://test.server.daluu.com:8011/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意这里配置了两个发布地址,一个是 正式版,一个是快照版本
正式版:已经稳定运行的版本
快照版本:开发迭代版本
如果决定我当前发布是正式版还是快照版本呢?
<groupId>com.oneinlet</groupId>
<artifactId>SuperRocket</artifactId>
<packaging>pom</packaging>
<!-- 是否快照版本取决于版本号带不带SNAPSHOT -->
<version>1.0-SNAPSHOT</version>
如果你需要忽略某个项目模块被部署,增加如下配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
如果你只是临时使用一些远程仓库,在项目pom文件配置:
<repositories>
<!--指向正确的服务器地址 -->
<repository>
<id>aliyun-repos</id>
<name>aliyun Releases</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
<repositories>