本文最后更新于 1029 天前,其中的信息可能已经有所发展或是发生改变。
组件化需要将基础组件传到私有源,让每个项目不在本地依赖基础组件,方便基础组件更新后。多项目代码的同步更新
通过 Docker 的方式搭建 nexus
- docker 拉取镜像
docker pull sonatype/nexus3
- 启动镜像,并且配置 端口映射 (-d 表示后台执行)
docker run -d -p 9003:8081 sonatype/nexus3:latest
登录 Nexus
- 查看启动的容器 id
docker ps
- 进入容器的 bash
docker exec -it {$docker_container_id} bash
- 查看默认密码(每个版本的密码存放路径不一样,可以看 docker 构建的 log 找到默认密码存放路径)
cat /nexus-data/admin.password
用默认密码 登陆账户 admin
建立仓库
- 点击主页的设置按钮 Repoitories -> Create repository 仓库建立页面
- 选择 仓库类型 为 maven2(hosted)
- 配置仓库名字,比如我这个库是用来放基础组件的,名字就叫: base_core
Android studio 上传组件(测试一下我们的私有源是否可以正常使用)
- android studio 新建工程 (代码基于 gradle 版本 7.0 以下),在新建的module 模块的 gradle 文件中拷贝下面的代码,用来发布到远程,使用的 插件是默认 的 maven 插件
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
// 发布地址:在 Nexus 的 仓库旁边有个 copy 按钮,copy 之后就是仓库地址
repository(url: uri($repo_url)){
//这里远程仓库需要认证,我建立了开发者账号,不写这个无法认证上传到私有源
authentication(userName:'developer_low',password:'zkyouxi2022')
}
pom.groupId = "com.zkyouxi.res"#上传后的组路径
pom.artifactId = "redpackage"#上传后的组件名称
pom.version = "v4.0.0"
}
}
}
- 上传之后看到 Nexus 里面有了我们新上传的组件,ok ,尝试远程依赖一下这个组件,nexus 首页->Browser->选中我们刚上传成功的组件->复制 usage 里面的内容 到 gradle dependences 即可