栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用 Docker 搭建 Maven 私服,并通过 maven-publish 上传 aar 到 Maven 私服

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用 Docker 搭建 Maven 私服,并通过 maven-publish 上传 aar 到 Maven 私服

1 Maven 与 Maven 私服

对于 Maven 大家应该都还不算太陌生,虽然作为 Android 开发我们都是用 gradle 来进行项目构建、依赖管理等工作,但是我们还是离不开 Maven 的中心仓库 Maven Central ,例如在我们的根 build.gradle 文件中就可以看到这样的代码:

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.2'
    }
}
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

这其中的 mavenCentral() 就是指将 Maven Central 指定为项目的Maven仓库,我们依赖某些第三方库时,会从 Maven Central 尝试搜索。

由于网络问题,我们直接访问 MavenCentral 往往比较慢,也会经常出现无法下载第三方库的情况。这种情况我们可以通过国内的 Maven Central 镜像仓库来解决这种问题,比如阿里云云效的Maven镜像,使用起来也很简单:

//central 与 jcenter的聚合仓库
maven{ url 'https://maven.aliyun.com/repository/public'}
//google 仓库
maven{ url 'https://maven.aliyun.com/repository/google'}

只需要将上面的代码添加到 allprojects 下的 repositories 即可。

1.1 为什么我们需要私服

既然有了中心仓库还有中心仓库的镜像站,为什么我们还需要私服?因为我们有的工件会存在一些私有业务之类,并不适合部署在 MavenCentral 这样的公开仓库,这种情况我们可以选择使用阿里云云效提供的免费Maven私有服务。

另一个选择就是搭建内网环境的 Maven 私服,还可以通过 Maven 私服作为代理,代理其他的 Maven 仓库。盗一张图方便大家理解:

这样通过 Maven 私服可以对用到的各个 Maven 仓库的工件进行缓存,其他成员用户使用时可以提升拉取速度。

1.2 使用 Docker 搭建 Maven 私服

过程超级简单,步骤如下:

    下载安装 Docker拉取 Nexus3 镜像
    docker pull sonatype/nexus3运行镜像
    docker run -d -p 8081:8081 --name nexus sonatype/nexus3打开网站 http://localhost:8081/查找密码登录 admin创新自己的账号

旧版的Nexus密码是 admin123,新版的需要自己去docker中查看:

    查看正在运行的容器:docker ps进入容器 :docker exec -it 容器id bash查看密码 vi opt/sonatype/sonatype-work/nexus3/admin.password

注意: 查看运行中的容器时,会看到有两个正在运行的容器,注意 NAMES 的区别,我们要进入的是 nexus 的容器,不要进错了。

2 使用 maven-publish 插件上传 aar 2.1 上传aar

其实步骤也很简单,但是网路上教程要不过期,要不不全面,给我们造成了很多干扰。

我们在需要上传的 Module 的 build.gradle 文件中做如下修改:

apply plugin: 'maven-publish'
//.......其他的配置
afterevaluate {
    publishing {
        publications {
            release(MavenPublication) {
            	//小驼峰flavorBuildType
                from components.release
                //必填的三个内容,组id,工件id,版本
                groupId = 'xyz.junerver.fileselector'
                artifactId = 'file-selector-phone'
                version = '1.1'
            }
        }
        repositories {
        	//如果有多个仓库需要上传,就写几个maven{}
            maven {
            	//如果私服是http的协议需要写这行配置
                allowInsecureProtocol = true
                //名称可以随便起
                name = "nexus"
                //私服仓库地址
                url = "http://localhost:8081/repository/maven-releases/"
                credentials {
                    username = '私服账号'
                    password = '私服密码'
                }
            }
        }
    }
}

重要:from components.release,这里是小驼峰的variant,没有flavor的话直接写buildType,有的话用小驼峰flavorBuildType;

添加如上配置后同步项目后,点开边栏的 Gradle应该出现如下的项目:

红线标记的 Release 是我们上面声明的产物名称,后面的 Nexus 则是对于我们声明的 maven 私服的名称。
点击该条目就会发布我们库到 Maven 私服了!

2.2 添加依赖

与上传时需要声明 maven 一样,我们需要在 allprojects 下的 repositories 添加我们私服的信息,然后添加依赖。

implementation 'groupId:artifactId:version'

这样写是带着 pom 信息中声明的依赖,如果只想单纯依赖 aar,而不依赖库中声明的依赖关系,可以在版本后面加上 @aar

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号