在center OS7下安装nexus
环境
安装以及配置
- 检查jdk版本号(这里安装的是nexus3.x 需要jdk版本1.8以上),命令行中输入java -version 查看版本号

- 安装jdk(步骤一中未安装jdk的情况下,已安装的跳过这一步)
sudo yum install java-1.8.0-openjdk.x86_64
- 进入opt目录
cd /opt
下载最新版的nexus
sudo curl -O https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.16.0-01-unix.tar.gz
解压压缩包
sudo tar -xzvf nexus-3.16.0-01-unix.tar.gz
- 创建软链接
sudo ln -s nexus-3.16.0-01
- 创建nexus账户
sudo useradd nexus
- 授权
sudo chown -R nexus:nexus /opt/nexussudo chown -R nexus:nexus /opt/sonatype-work/
- 打开
/opt/nexus/bin/nexus.rc文件, 去掉run_as_user变量的注释,将用户修改为nexus
sudo vi /opt/nexus/bin/nexus.rcrun_as_user="nexus"
- 安装服务(systemd),创建服务文件
sudo vi /etc/systemd/system/nexus.service// 添加配置[Unit]Description=nexus serviceAfter=network.target[Service]Type=forkingExecStart=/opt/nexus/bin/nexus startExecStop=/opt/nexus/bin/nexus stopUser=nexusRestart=on-abort[Install]WantedBy=multi-user.target
- 配置添加完成后可通过以下命令对nexus服务进行操作
sudo systemctl start nexus //启动nexus服务sudo systemctl restart nexus //重启nexus服务sudo systemctl stop nexus //停止nexus服务sudo systemctl status nexus //查看服务状态
- 安装并启动服务,查看服务状态
sudo systemctl daemon-reloadsudo systemctl enable nexussudo systemctl start nexus// 查看服务状态sudo systemctl status nexus>> Loaded: loaded (/etc/systemd/system/nexus.service; enabled; vendor preset: disabled)>> Active: active (running) since 二 2019-04-16 19:40:12 CST; 1 day 16h ago //服务正在运行
- 修改配置nexus配置文件
sudo vi /opt/sonatype-work/nexus3/etc/nexus.propertiesnexus-context-path=/nexus //修改上下文application-port=8888 //修改端口号为8888application-host=0.0.0.0 //如果对ip进行了解析,则修改为127.0.0.1
如果服务器开启了防火墙,则需要添加防火墙规则,允许直接访问相应端口
sudo firewall-cmd --zone=public --permanent --add-port=8888/tcp //上面配置的端口号sudo firewall-cmd --reload
访问nexus服务,打开http://ip:8888/,默认的账户admin,默认密码admin123,至此,nexus服务已经配置完成并成功启动
maven仓库以及用户配置
仓库管理,详细内容可以看官方文档
类型
- hosted 本地仓库,可以部署自己的组件到这一类型的仓库。比如公司的第二方库
- proxy 代理仓库,可以代理远程的公共仓库,如maven中央仓库,它可以将远程仓库中的内容缓存在nexus中,下次使用时直接从nuxus中加载
group 仓库组,可以合并多个hosted/proxy仓库,从而实现一次引入多个仓库中的组件
版本类别
snapshots 格式:版本号-snapshots,版本快照,可以发布一些测试版本在这里,同一版本可以覆盖之前的版本
- release 发布版本,一旦发布,就不可能修改,不能通过覆写来修改,只能通过version修改来迭代
仓库管理
在setting > Repository中可以进行仓库的管理,包括创建,修改,删除权限管理
入口: setting > privileges权限组管理
入口: setting > roles 可以通过创建role对权限进行组合,默认的两组规则,nx-admin:admin管理员的默认权限,最高权限,可以进行增删改仓库,用户,规则等; nx-anonymous: 匿名(未登录)用户权限,只拥有只读权限,可以下载仓库中的组件用户管理
入口: setting > users ,在user组中默认存在两个用户,1: admin,默认权限组:nx-admin 2: anonymous,默认权限组:nx-anonymous,在私服中,建议新建一组禁止访问权限(不添加任何权限),并将anonymous的权限改为禁止访问权限(user必须赋予一组权限)
建议新建两个用户以及两个用户权限组:1. 发布账户,用于发布组件到仓库中 2. 只读账户,拥有仓库只读权限,可以下载仓库中组件到本地,用于需要使用该组件的用户发布组件到maven仓库
- 新建maven发布账号,分配相关权限
- 在根目录的gradle.properties 中添加如下配置
RELEASE_URL=http://ip:port/nexus/repository/maven-release/SNAPSHOT_URL=http://ip:port/nexus/repository/maven-snapshots/NAME=name //配置的发布账户的账号PASSWORD=password //配置的发布账号的密码
- 在module中新建maven_push.gradle和gradle.properties文件,目录结构如下

- 修改maven_push.gradle,代码如下
apply plugin: 'maven'apply plugin: 'signing'configurations {deployerJars}repositories {mavenCentral()}// 判断版本是Release or Snapshotsdef isReleaseBuild() {return RELEASE.toBoolean()}// 获取仓库urldef getRepositoryUrl() {return isReleaseBuild() ? RELEASE_URL : SNAPSHOT_URL}def getVersion() {return isReleaseBuild() ? VERSION : VERSION + '-SNAPSHOT'}uploadArchives {repositories {mavenDeployer {beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }pom.version = getVersion()pom.artifactId = ARTIFACT_IDpom.groupId = GROUP_IDrepository(url: getRepositoryUrl()) {authentication(userName: mavenUser, password: mavenPassword) // maven授权信息}}}}// 进行数字签名signing {// 当 发布版本 & 存在"uploadArchives"任务时,才执行required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }sign configurations.archives}// type显示指定任务类型或任务, 这里指定要执行Javadoc这个task,这个task在gradle中已经定义task androidJavadocs(type: Javadoc) {// 设置源码所在的位置source = android.sourceSets.main.java.sourceFiles}// 生成javadoc.jartask androidJavadocsJar(type: Jar) {// 指定文档名称classifier = 'javadoc'from androidJavadocs.destinationDir}// 生成sources.jartask androidSourcesJar(type: Jar) {classifier = 'sources'from android.sourceSets.main.java.sourceFiles}// 产生相关配置文件的任务artifacts {archives androidSourcesJararchives androidJavadocsJar}
- 修改gradle.properties,增加仓库配置信息
VERSION=1.0 //版本号GROUP_ID=com.example.view //包名ARTIFACT_ID=extendflexboxlayout //组件名RELEASE=true //是否为release版本
- 在build.gradle中引入maven_push,重载下gradle
apply from: 'maven_push.gradle'
- 在android studio右边gradle中就可以看到相应的gradle组件了,双击uploadArchives进行发布

mavenUser=usermavenPassword=password
在项目根目录的gradle中配置maven仓库地址
maven {url "http://ip:port/nexus/repository/maven-snapshots/"credentials {username "$mavenUser"password "$mavenPassword"}}
在需要使用组件的仓库中的gradle文件中引入相应的组件
dependencies {//格式为maven仓库中的group:name:versionimplementation "com.example.view:extendflexboxlayout:1.0-SNAPSHOT"}
- enjoy it
