
本文详细介绍了如何搭建 Nexus 的 Maven 私服。
Maven 简介
什么是 Maven

Maven这个单词来自于意第绪语(犹太语),意为知识的积累。
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven 的发展历史

Maven 的体系结构

Maven 的配置
安装
下载地址:https://archive.apache.org/dist/maven/maven-3/
推荐下载 3.6.3版本,下载后解压即可。
配置本地仓库
<localRepository> 本地仓库地址 <localRepository>

配置阿里云镜像
由于中央仓库在境外,网络访问不稳定,故在开发过程中大多配置中央仓库的镜像仓库。
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

profile 配置
配置maven默认使用的jdk环境。
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

idea 全局配置 Maven


Maven 核心思想
Maven 仓库

Maven 生命周期

maven项目对象模型(pom)

dependency


Maven 私服 Nexus 的搭建
Nexus 的安装
官网下载链接:https://help.sonatype.com/repomanager3/product-information/download

将安装包上传到 Linux 中,这里我们选择上传目录为 /usr/local/software/nexus ,然后解压 tar -zxvf nexus-3.61.0-02-unix.tar.gz,解压后将压缩包删除节省空间。
最终目录如下

nexus-3.61.0-02:服务器文件夹,启动程序等。
sonatype-work:工作空间,数据文件。
Nexus 的配置
内存配置
修改 nexus-3.61.0-02/bin/nexus.vmoptions 文件

内存分配大小参考(本机内存为8G),根据自己机器内存大小,适当配置内存大小(内存太小会启动失败)。
端口配置
默认端口为 8081,如需修改,配置文件为:/nexus-3.61.0-02/etc/nexus-default.properties

端口确定后,需要 Linux 防火墙开放此端口。
# 开放端口 --permanent表示将该规则永久保存,使得在系统重启后依然有效。
firewall-cmd --add-port=8081/tcp --permanent
# 重新加载防火墙配置
firewall-cmd --reload
运行 Nexus
启动 Nexus
- 切换到
bin目录下nexus-3.61.0-02/bin - 执行启动命令
./nexus start

登录并修改密码
浏览器打开 http://服务器ip:8081/,如下图

进入 sonatype-work/nexus3 目录查看登录用户名和密码。

如图,使用 cat admin.password 命令可查看admin用户的初始密码。

现在我们点击浏览器页面右上角,点击登录,输入用户名和密码。





配置私有仓库
- 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)

配置完成后点击最下面的 Create repository。然后我们就可以在仓库列表页看到刚刚创建的仓库了。

添加新建仓库到maven-public群组中
添加后访问 maven-public 就可以访问自己的私有仓库了
导入本地仓库到 Nexus 私有仓库
上传文件到 Linus 服务器
在 nexus 目录下新建 repo 目录,然后将本地(Windows)仓库文件上传至 repo 目录下。

上传成功后,我们需要将文件上传到刚刚在 nexus 中新建的私有仓库中。
批量上传脚本(从 repo 上传到 nexus)
-
在
repo目录下创建repo.sh脚本文件。
touch 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}/{} ; -
给脚本添加可执行权限
chmod +x repo.sh -
执行导入命令
./repo.sh -u admin -p 123 -r http://192.168.200.135:8081/repository/maven-repository/注意修改登录密码,服务器ip和私有仓库名称
完成后可到 Nexus 仓库中查看上传的文件。
项目中引用nexus库
修改 Maven 配置
- 在maven配置文件(conf/settings.xml)中配置server

- 在maven配置文件中配置镜像

项目中配置发布管理
在项目的 pom.xml 文件中添加
<distributionManagement>
<repository>
<id>maven-repository</id>
<url>http://192.168.200.135:8081/repository/maven-repository/</url>
</repository>
</distributionManagement>
注意配置在最外面这个pom文件下

...
<dependencies>
...
</dependencies>
<distributionManagement>
<repository>
<id>maven-repository</id>
<url>http://192.168.200.135:8081/repository/maven-repository/</url>
</repository>
</distributionManagement>
</project>
私服url从下图获取

部署项目到私服

点击 deploy 部署,部署完成后,可以到 Nexus 私有仓库中查看,若项目成功部署上去,即证明配置搭建成功。
感谢大家读到这里,后续还会有其他相关文章,欢迎继续阅读。
本文详细介绍了Maven的基础概念、Maven项目对象模型(POM)的应用,以及如何配置Maven私服Nexus,包括本地仓库设置、阿里云镜像配置、Maven版本管理和项目部署到私有仓库的步骤。


3050

被折叠的 条评论
为什么被折叠?



