需求背景
在日常项目开发过程中,一些公共模块在不同的项目中被引用,此时如果对公共模块进行修改,那么需要修改好几个项目,不利于后期维护,此刻可以去搭建私有maven的方式去发布该模块.
一.私有maven搭建
1这里我们需要下载nexus来部署maven服务:
下载地址:https://www.sonatype.com/thanks/repo-oss?submissionGuid=bc68a73f-4cff-4a92-b4f2-7c0cefe09233
根据自己的需求去下载对应的版本:
我这里是mac系统 ,下载完成后解压, 会有两个文件夹:
image.png
选择第一个文件夹,进入bin目录,并打开终端,执行./nexus start 命令,运行后截图如下:
image.png
浏览器输入localhost:8081.可以访问到这个页面就算成功了,
image.png默认账号是admin 初始化密码是在我们进入主页后,默认在解压目录下生成
image.png image.png
至此,我们的maven服务就是搭建成功了,是不是很简单
登陆成功后会看到右侧有一个列表,这里我们只关注截图里maven仓库,可以看到这里仓库有三种类型
image.png
下面先了解这三种类型仓库的区别:
- host
用于存储module代码,这里需要注意的地方是,我们配置发布module的仓库地址,一定要是host类型的仓库,如果是proxy类型和group类型,就会报405错误
2.proxy
用于配置第三方仓库,比如我们的module里如果用到了rxjava, retrofit这些第三方,就可以新建一个proxy仓库来指向mavenCenter仓库地址和阿里的maven仓库地址,这样别人在依赖我们的项目时,能够自动下载这些库
3.group
组合类型仓库,当我们把项目代码发布,并且配置好了proxy仓库后,我们就需要用这个仓库来关联Host仓库和proxy仓库,我们对外提供的仓库地址也是group仓库地址,这一点一定要特别特别注意
创建仓库
上面截图是我们解压完成之后,默认生成的仓库,我们可以直接使用这些仓库, 如果不想用这些仓库,可以自己创建仓库,创建流程如下
image.png
按照顺序操作,会出现一个页面,这里type选择file,
名字自己用公司名或者项目名命名即可,这一步的作用是创建存储区域
image.png
接下来就是开始创建仓库了,依然是在设置页面
image.png
点击之后会出现一大串列表,我们只要选择maven类型仓库就可以,这里我们选择maven类型仓库即可,因为我这里是上传aar,所以我选择host类型
image.png
点进去之后出现创建页面,这里名字我们自己填写公司名或者项目名即可, 然后还有一个BlobStore选项,这里就选择前面我们创建的就可以,创建仓库的时候有一个VersionPolicy选项, 常用的有两个选项
Release:发布版本的时候以版本号为唯一标识,如果已经部署相同版本的项目,则会提示报错
Snapshot: 发布版本的时候可以发布相同版本的项目,依赖的时候会自动依赖最新上传的
仓库搭建好后,回到仓库列表页面,点击copy按钮即可获取上传maven地址, 至此我们就可以用这个链接,完成项目的发布
image.png
发布项目
apply plugin: 'maven'
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: MAVEN_REPO_RELEASE_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version '1.0.4'
artifactId 'AndroidPaySDK'
groupId GROUP_ID
packaging TYPE
}
}
}
}
编译项目之后,右侧gradleTask列表就能找到upload命令,点击即可上传成功
image.png
后续可以在浏览器看到我们上传的aar了
image.png
这里只是上传我们的aar,如果aar里依赖了第三方库 比如rxjava,就要配置第三方代理仓库,常用的maven仓库地址我们都给配齐:
...
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
maven { url 'https://jitpack.io' }
maven { url 'https://repo1.maven.org/maven2/' }
maven { url 'https://developer.huawei.com/repo/'}
...
配置好代理仓库之后,接下就是创建group仓库了,创建group仓库之后同上,配置的时候把我们需要的仓库移过去就可以了
image.png仓库使用
复制配置好的group仓库地址, 在新项目里去引用就可以了
image.png image.png
网友评论