关于nexus
nexus,全名sonatype nexus,是用于搭建私有maven仓库的工具,可对java/android进行模块化、组件化、插件化等进行依赖管理,有企业版和免费版。我们使用免费版即可,本文仓库搭建环境为阿里云centOS7.需注意nexus仓库的物理配置建议为2核4G内存,最好至少是2核2G,不能可能无法启动。
maven及jdk依赖
nexus依赖maven及jdk。下载方式略过,maven需保证mvn命令可用,另外需定义好JAVA_HOME环境变量。
[vim /etc/profile]
1 | #Java |
nexus下载
nexus提供mac、windows以及unix版的binary下载,centos选择unix的即可。截止到目前有2.x与3.x版,3.x可点击链接前往下载.同样先配置下环境变量
[vim /etc/profile]
1 | export NEXUS_HOME=/path_toNexus/nexus-3.41.1-01 |
nexus配置
nexus若提示找不到jdk,可手动修改路径
[vim /NEXUS_HOME/bin/nexus]
1 | INSTALL4J_JAVA_HOME_OVERRIDE=/path_toJdk/jdk1.8.0_141 |
nexus启动
nexus start
默认启动端口为8081,需避免端口占用。浏览器访问后,点击登录,用户名admin,密码默认存储在nexus同级目录sonatype-work下,根据弹窗提醒前往拷贝,首次登录后修改密码即可。拷贝setting/respository下的maven-releases和maven-sanshots url地址备用
启动时间较长,可能30s以上
安卓示例
- 配置probject build.gradle,buildscript和allprobjects下添加私有的maven仓库nexus地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19buildscript{
repositories{
google()
mavenCentral()
maven{
url:"http://svinvy.com:8081/repository/maven-releases"
}
}
dependencies:{}
}
allprojects{
repositories{
google()
mavenCentral()
maven{
url:"http://svinvy.com:8081/repository/maven-releases"
}
}
} - 配置需上传的module的build.gradle,添加上传配置uploadAchirves。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18apply plugin:'maven'
uploadArchives:{
configuration=configurations.archives
repositories:{
mavenDeployer{
repository(url:MAVEN_REPO_REPLEASE_URL){
authentication:(userName:NEXUS_USERNAME,passowrd:NEXUS_PASSWORD)
}
pom.project{
version "1.0.0"
artifactId 'ASPlugin'
goupId GROUP_ID
packaging TYPE
description DESCRIPTION
}
}
}
}MAVEN_REPO_RELEASE_URL(nexus的maven-releases url),NEXUS_USERNAME/NEXUS_PASSWORD(nexus用户名/密码),GROUP_ID,TYPE,DESCRIPTION等需在gradle.properties下提前配置好。
- 执行./gradlew uploadAchirves命令发布module.
- 在需要使用添加依赖的appication/module的build.gradle下添加api依赖即可。
配置SSL证书
使用nginx反向代理8081端口即可。需要注意的是3.x和2.x的nexus版本不同,3.x的nexus地址不以nexus开头。因此配置location时需rewrite将相应path前缀移除。
1 | location ^~/nexus { |