在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/nexus
sudo chown -R nexus:nexus /opt/sonatype-work/
- 打开
/opt/nexus/bin/nexus.rc
文件, 去掉run_as_user
变量的注释,将用户修改为nexus
sudo vi /opt/nexus/bin/nexus.rc
run_as_user="nexus"
- 安装服务(systemd),创建服务文件
sudo vi /etc/systemd/system/nexus.service
// 添加配置
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=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-reload
sudo systemctl enable nexus
sudo 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.properties
nexus-context-path=/nexus //修改上下文
application-port=8888 //修改端口号为8888
application-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 Snapshots
def isReleaseBuild() {
return RELEASE.toBoolean()
}
// 获取仓库url
def 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_ID
pom.groupId = GROUP_ID
repository(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.jar
task androidJavadocsJar(type: Jar) {
// 指定文档名称
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
// 生成sources.jar
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
// 产生相关配置文件的任务
artifacts {
archives androidSourcesJar
archives 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=user
mavenPassword=password
在项目根目录的gradle中配置maven仓库地址
maven {
url "http://ip:port/nexus/repository/maven-snapshots/"
credentials {
username "$mavenUser"
password "$mavenPassword"
}
}
在需要使用组件的仓库中的gradle文件中引入相应的组件
dependencies {
//格式为maven仓库中的group:name:version
implementation "com.example.view:extendflexboxlayout:1.0-SNAPSHOT"
}
- enjoy it