在上一章节中:Flink实战:02.保存项目为archetype模板 ,给大家分享了如何制作一个本地的项目模板,这一节内容我将分享如何如何部署一个 nexus
私仓,并把这个本地 archetype
模板发布到仓库中,以方便团队其他人使用。
nexus
是目前一个比较流行的仓储管理软件,很多公司往往使用它来部署自己公司内部项目的私有仓库,nexus
支持的包管理的系统相当丰富:
Bower
Docker
Git LFS
Maven
npm
NuGet
PyPI
Ruby Gems
Yum
APT
Conan
R
CPAN* Raw (Universal)
p2
Helm
ELPA*
Go
CocoaPods
复制代码
可以说 nexus
其实是把众多包管理系统整合了起来,接下来我们将部署一个 maven
的私仓包管理系统。
Docker方式安装
部署 nexus
采用的是 docker
方式,相比物理机,容器部署对于后期集群扩容运维显得非常方便,nexus
采用 docker
部署流程也非常简单,原文请点击此处:nexus docker 部署说明
创建数据卷
docker volume create --name nexus-data
复制代码
容器属于一次性快餐产品,下次重启所有数据会全部丢失,但作为包管理仓储系统,我们需要把实际托管的项目软件包存放到实际的物理硬盘中,在容器中,数据卷(volume
) 是持久化存储的一种方式。这里我们创建了一个 nexus-data
的数据卷,用来存储 neuxs
所存放的数据。
挂载数据卷并启动
docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3
复制代码
启动 8081
端口的http服务,并挂载 nexus-data
数据卷。稍等片刻后,访问 http://localhost:8081
地址即可看到该项目的web页面:
admin
,密码文件存放于 /nexus-data/admin.password
文件中,自行查看即可。
如果是公司内部项目,可能你还会额外配置内网域名解析、多机器负载均衡配置等等。这里不再细说。
配置 mvn 阿里云代理
当我们部署好这个默认 nexus
服务后,理论上可以直接使用,但是这里需要额外做一步工作。maven
默认的中心仓储地址在国内那是相当的慢,因此这里配置一个默认的国内代理仓库中心,以加速 mvn
包的下载体验。
1. 创建 aliyun mvn 代理
首先登录刚才部署 nexus
服务,然后选择:设置
→ Repository
→ Create Repository
→ maven2 proxy
:
2. 配置 maven public组
接下来需要把这个阿里云代理仓库配置到 maven public
组下,并且放在首位,即是当通过此源下载软件包时优先使用 aliyun
的代理服务。
nexus
私仓搭建完毕,下来我们把上一节制作的项目模板发布到该私仓上去。
发布项目模板到私仓
首先我们需要配置本地的mvn配置文件:settings.xml
,替换仓库地址为私仓地址:
<mirror>
<id>nexus-yuankan</id>
<mirrorOf>central</mirrorOf>
<name>Nexus YuanKan</name>
<url>http://nexus.yuankan.co/repository/maven-public</url>
</mirror>
复制代码
并且,需要配置私有仓库的账号和密码,用于上传发布代码包使用,当然 nexus
其实也可以手动在线上传代码包,此处采用 mvn
命令行方式,因此还需要配置如下数据:
<server>
<id>yuankan</id>
<username>admin</username>
<password>nexus服务密码</password>
</server>
复制代码
配置完 settings.xml
配置后,我们还是根据第二节构建项目的 artchetype
文件,具体请参考第二节内容:
# 进入项目目录
cd ~/IdeaProjects/FlinkDemo
# 运行制作 archetype 命令,基于当前项目
mvn archetype:create-from-project
cd target/generated-sources/archetype
复制代码
我们需要修改编译构建的目录,并修改此目录下的 pom.xml
文件,添加如下分发代码:
<project>
<distributionManagement>
<repository>
<id>yuankan</id>
<name>Nexus Release Repository</name>
<url>http://nexus.yuankan.co/repository/maven-releases/</url>
</repository>
</distributionManagement>
</project>
复制代码
请注意这里的 id
和 settings.xml
文件的id
值需要保持一致,即代表往这个mvn中心发布项目代码。
发布代码
执行如下命令即可发布 archetype
模板文件到 nexus
中:
cd target/generated-sources/archetype
mvn clean deploy -Dmaven.test.skip=true
复制代码
如果不出意外,项目模板即可发布到你的nexus
私有仓库中,如果希望使用该模板作为创建项目基础结构那么使用命令行或使用第一节提到的可视化配置方式即可。
使用方式
基于命令创建项目:
mvn archetype:generate -DarchetypeGroupId=co.yuankan -DarchetypeArtifactId=FlinkDemo-archetype -DarchetypeVersion=1.9-RELEASE
复制代码
基于 idea
可视化配置创建项目,请参考第一节:Flink实战:01.创建项目结构
本节分享完毕,感谢你的阅读。
作者:猿谋人 博客:yuankan.co