本教程主要用于CentOS7操作系统如何安装配置私服Nexus。
一.配置JDK
请参考本网站的文章:《CentOS7安装JDK》
二.安装
- 下载,需要能访问外网的网络。
$ mkdir ~/nexus
$ cd ~/nexus
$ wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
- 解压
$ tar zxf latest-unix.tar.gz
$ ls
latest-unix.tar.gz nexus-3.37.3-02 sonatype-work
说明:
-
nexus-x.xx.x-x: 是nexus服务器相关的文件。
-
sonatype-work: 是nexus工作的数据文件,上传下载的jar包就在这个文件夹下面。
三. 配置nexus.vmoptions
$ cd nexus-3.37.3-02
$ vim bin/nexus.vmoptions
- 配置内存
如果内存比较少,则调整下VM参数,参考值如
-Xms500M -Xmx500M -XX:MaxDirectMemorySize=800M
- 配置存储路径
如果内存比较少,则调整下VM参数,参考值如
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
四. 配置nexus-default.properties
$ cd nexus-3.37.3-02
- 端口修改:
$ sed -i 's/application-port=8081/application-port=28080/' etc/nexus-default.properties
-
nexus-context-path修改
比如想把访问路径改成/nexus3
$ sed -i 's#nexus-context-path=/#nexus-context-path=/nexus3#' etc/nexus-default.properties
五.启停命令
- 启动
$ /home/nexus/nexus/nexus-3.37.3-02/bin/nexus start
- 停止
$ /home/nexus/nexus/nexus-3.37.3-02/bin/nexus stop
- 重启
$ /home/nexus/nexus/nexus-3.37.3-02/bin/nexus restart
六.验证
访问https://xx.xx.xx.xx:28080/nexus3
输入账号:admin
密码sonatype-work目录/nexus3/admin.password
登录后修改密码
七.管理私服本地仓库
7.1 仓库类型
Nexus有4个【类型】的数据仓库:hosted,proxy,group、virtual
-
group
(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库; -
hosted
(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库); -
proxy
(代理类型): 从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration
页签下Remote Storage Location
属性的值即被代理的远程仓库的路径); -
virtual
(虚拟类型): 虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用);
Policy(策略):表示该仓库为发布(Release)版本仓库还是快照(Snapshot)版本仓库;
7.2 默认仓库
Nexus预定义了2个本地仓库,分别是maven-releases
, maven-snapshots
。
-
maven-releases:这里存放我们自己项目中发布的构建, 通常是Release版本的。
-
maven-snapshots:这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本。
默认仓库介绍
-
maven-central(proxy)
: maven中央库,默认从https://repo1.maven.org/maven2/拉取jar -
maven-releases(hosted)
: 私库发行版jar -
maven-snapshots(hosted)
:私库快照(调试版本)jar -
maven-public(group)
: 仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
7.3 项目使用仓库
-
修改maven的配置文件setting.xml文件
一般私服都会有账号密码,在这里配置即可。
$ vim ~/3rd/apache-maven-3.3.9/conf/settings.xml
<servers>
<server>
<id>deploymentRepo</id>
<username>deployment</username>
<password>aideployment</password>
</server>
</servers>
- 修改用户家目录下
$HOME/.m2
目录的setting.xml文件
八.例子
8.1 新建仓库
1.在Repositories
菜单页面,点击Create repository
,选择maven2(proxy)
,输入名称
比如(maven-ali), Remote storage
对应输入https://maven.aliyun.com/repository/central
2.在Repositories
菜单页面,点击Create repository
,选择maven2(hosted)
,输入名称
比如(inner)
Version policy
选择Release
Deployment policy
选择好对应的策略。
3.在Repositories
菜单页面,点击Create repository
,选择maven2(hosted)
,输入名称
比如(inner-snapshot)
-
Version policy
选择Snapshot
-
Deployment policy
选择好对应的策略。
4.在新建一个public对外发布,然后把其他仓库(内部源、阿里云源、snapshot源)都集合在此组里。
8.2 上传jar包到仓库
1.点击网页顶部的"设置"左侧的按钮,在出现的左侧菜单点击"Upload"菜单,然后选择一个仓库,比如点击例子里的"inner"(这个可以自己创建)
2.选择要上传的本地 jar 包,并填写好对应的 groupId、artifactId、version,点击 upload
按钮。
8.3 上传pom文件到仓库
跟jar包一样,选择对应的pom文件即可,不需要填写groupId、artifactId、version,直接点击 upload
按钮。
8.4 上传SNAPSHOT版本
在有mvn工具的机器上,上传jar包或者pom文件到第一步的inner-snapshot仓库
mvn deploy:deploy-file -DgroupId=com.youcompany -DartifactId=your-artifactID -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar -Dfile=./your-jar-1.0.1-SNAPSHOT.jar -Durl=http://10.3.3.23:28080/nexus3/repository/inner-snapshot/ -DrepositoryId=deploymentRepo
mvn deploy:deploy-file -DgroupId=com.youcompany -DartifactId=your-artifactID -Dversion=1.0.0-SNAPSHOT -Dpackaging=pom -Dfile=./your-jar-1.0.1-SNAPSHOT.pom -Durl=http://10.3.3.23:28080/nexus3/repository/inner-snapshot/ -DrepositoryId=deploymentRepo
其中-DrepositoryId=
是在maven目录下的settings.xml
里配置的id
值
<server>
<id>deploymentRepo</id>
<username>deployment</username>
<password>aideployment</password>
</server>
另外username、password可以分配一个专门上传的账号。
九. 问题
9.1 异常报错
- 问题
*UNKNOWN com.sonatype.nexus.plugins.outreach.internal.outreach.SonatypeOutreach - Could not download page bundle
org.apache.http.conn.HttpHostConnectException: Connect to sonatype-download.global.ssl.fastly.net:443 [sonatype-download.global.ssl.fastly.net/69.171.245.49] failed: 连接超时
- 解决
登录账号,打开【System】--》【Capabilities】,将【Outreach:Management】禁用即可。
本文没有授权给任何组织、企业和个人转载,未经作者允许禁止转载!
欢迎关注我的公众号testerzhang,原创技术文章第一时间推送。