Nexus :
是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。
Maven 仓库管理器,主要有以下 3 种:
- Apache Archiva
- JFrog Artifactory
- Sonatype Nexus
Nexus 开源版具有以下特性:
- 占用内存小(28 M 左右)
- 具有基于 ExtJs 得操作界面,用户体验较好
- 使用基于 Restlet 的完全 REST API
- 支持代理仓库、宿主仓库和仓库组
- 基于文件系统,不需要依赖数据库
- 支持仓库索引以及搜索
- 支持在界面上上传构件
- 安全控制
下载与安装:2.0版本
下载官网地址:Download
或者直接下载地址:nexus.zip
注解:如果遇到下载失败,最好用下载工具进行下载,目前我在下载过程中遇到了下载超时,用迅雷下载完美解决此问题。
解压以后得到:
- nexus-:该目录中包含了 Nexus 2.x 运行所需要的文件,如启动脚本、依赖 jar 包等。
- sonatype-work:该目录中包含了 Nexus 2.x 生成的配置文件、日志文件等。
如何启动:
.进入 \nexus\bin\jsw 文件夹,根须操作系统版本选择合适的目录,由于我的操作系统是 Windows 10 64 位,所以选择 windows-x86-64 目录
其中:
- console-nexus.bat:启动 Nexus 并在 DOS 命令行中展示启动过程。
- install-nexus.bat:将 Nexus 安装为 Windows 服务,开机自动启动。
- start-nexus.bat:启动 Nexus。
- stops-nexus.bat:停止 Nexus。
- uninstall-nexus.bat:与 install-nexus.bat 相对应,负责卸载 Nexus 服务。
如果第一次安装,双击运行 install-nexus.bat 安装 Nexus 服务,然后再运行 start-nexus.bat 启动服务。
注意:
- 运行 install-nexus.bat 安装服务,若提示”wrapper | OpenSCManager failed - 拒绝访问。 (0x5)“,只要关闭窗口,以管理员身份运行即可解决。
- 运行 start-nexus.bat 启动服务,若提示”wrapper | OpenSCManager failed - 拒绝访问。 (0x5)“,只要关闭窗口,以管理员身份运行即可解决。
访问:
访问 http://localhost:8081/nexus
默认的账号和密码:admin 和 admin123
登录成功:
Nexus仓库配置:
在仓库列表中,每个仓库都具有一系列属性:
- Type:仓库的类型,Nexus 中有 4 中仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)。
- Format:仓库的格式。
- Policy:仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库。
- Repository Status:仓库的状态。
- Repository Path:仓库的路径。
这里面我们正常使用hosted宿主仓储即可。
Releases:正式版本
Snapshots:测试版本,如果是测试版本,在push 本地aar的时候,需要在版本最后加"-Snapshots"
我们一般包上传到hosted类型,默认已够我们使用。
Repository Path:仓库地址,如果我们在maven需要使用,上传和下载,的地址就是这个。直接copy到AndroidStudio或者maven xml文件中配置即可。
Android build Maven push打包上传:
1.Android部分如果不熟悉如何打包上传,可以参考Android Maven build教程
2.针对部分Maven上传失败,或者上传不到 Nexus服务的解决方案,可以修改maven task方法。
maven_push.gradle文件如下:
apply plugin: 'maven'
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = GROUP_ID
pom.artifactId = ARTIFACT_ID
pom.version = VERSION
repository(url: RELEASE_URL) {
authentication(userName: USER_NAME, password: PASSWORD)
}
}
}
}
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
}
最后执行上传结果如下:
这是上传成功,我们就可以在Nexus仓库找到该包,release的包由于上传不支持覆盖版本号,所以每次上传都需要更新版本号,否则报错。
Android如何下载包:
1.在项目最外层build文件中,新增对Nexus maven库的支持
maven {
url 'http://192.168.1.100:8081/nexus/content/repositories/releases/'
}
2.直接引用包
implementation "com.android.mobile.woniu:woniuFrame:2022.9.1.01"