搭建本地Maven私服,并使用Android Studio统一管理

由于公司项目多,且都依赖于一个公共Library,导致Library有变动所有的被依赖者都需要重新修改、构建,很繁琐。而用Maven管理,只需添加如下的一行代码到模块的build.gradle文件中,就可以轻松解决问题了。

//adnroid 3.0以下使用compile,3.0及其以上可以使用api/implementation
//api/implementation的区别可以自行百度
dependencies {
  implementation 'com.android.library:lib:+'
}

以下为笔者本地配置,用的是Mac系统

配置Nexus

  1. 下载Nexus 官网地址

    搭建本地Maven私服,并使用Android Studio统一管理_第1张图片
    Nexus示例.png

    笔者下载的是 nexus-2.14.8-01-bundle版本

  2. 解压后,即可以在安装目录下看到两个文件夹,主要是Nexus运行环境和存储Library。上传的Library会存放在下图storage下对应的文件夹中。


    搭建本地Maven私服,并使用Android Studio统一管理_第2张图片
    Nexus_Path.png
  3. 命令行cd到nexus-2.14.8-01-bundle/bin目录下,使用命令 nexus start 启动Nexus。

    搭建本地Maven私服,并使用Android Studio统一管理_第3张图片
    Nexus_start.png

  4. 如果启动成功,打开网页,访问 http://localhost:8081/nexus/
    默认用户名admin,密码admin123

    搭建本地Maven私服,并使用Android Studio统一管理_第4张图片
    Nexus_login.png

  5. 登陆后,在左侧边栏点击Repositories。点击Add,选择Hosted Repository添加私有仓库。

    搭建本地Maven私服,并使用Android Studio统一管理_第5张图片
    Nexus_repository.png

  6. 填写自己的Repository ID,Repository Name,把Deploymen Policy勾选为Allow Redeploy,然后其他默认就可以,点击保存。

    搭建本地Maven私服,并使用Android Studio统一管理_第6张图片
    Nexus_create.png

    然后在列表中就可以找到我们的库在本地的地址http://localhost:8081/nexus/content/repositories/lib/,这个地址在后面会用到
    Nexus_lib.png

配置Gradle

  1. 在需要发布的模块下新建一个nexus_maven_push.gradle,与build.gradle同层级
    搭建本地Maven私服,并使用Android Studio统一管理_第7张图片
    Gradle.png
  2. nexus_maven_push.gradle中主要配置的内容有:url,authentication以及pom.project里面的信息
apply plugin: 'maven'

configurations {
    deployerJars
}

repositories {
    mavenCentral()
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/nexus/content/repositories/lib/") {
                authentication(userName: "admin", password: "admin123")
            }
            pom.project {
                name 'test'
                version '1.0.0'
                artifactId 'lib'
                groupId 'com.android.library'
                packaging 'aar'
                description 'library for android'
            }
        }
    }
}
  1. 在该模块下的build.gradle文件最后,添加
    apply from: 'nexus_maven.gradle'
  2. 在项目同步之后,就可以上传了


    搭建本地Maven私服,并使用Android Studio统一管理_第8张图片
    Gradle_upload.png

    选择uploadArchives,如果项目没有什么问题的话,则会提示BUILD SUCCESSFUL。
    刷新网页,可以看到Library已经成功上传


    搭建本地Maven私服,并使用Android Studio统一管理_第9张图片
    Gradle_upload_success.png

Library使用

  1. 在项目的build.gradle里面声明私服的地址:
allprojects {
    repositories {
        maven {
            url 'http://localhost:8081/nexus/content/repositories/lib/'
        }
        jcenter()
        google()
    }
}
  1. 在需要使用该模块的build.gradle文件中,添加项目依赖。
dependencies {
  implementation 'com.android.library:lib:+'
}

使用+是为了同步时,都会获取到最新的版本。当然固定版本号也是可以的。

dependencies {
  implementation 'com.android.library:lib:1.0.0'
}
  1. 这里的组成和提交的pom.project的信息有关。
    搭建本地Maven私服,并使用Android Studio统一管理_第10张图片
    pom.png

注意:上传所用Android Studio的Gradle版本,需要与下载所用的一致。

关于Gradle缓存

在执行过一次Gradle的同步之后,Gradle会把对应的Library的文件下载在本地,之后会直接使用。所以当我们删除旧的Library,用同样的pom.project信息重新上传一个新的Library时,执行Gradle同步,并不会更新最新的Library下来。这个时候可以到仓库存储路径下把对应的Library文件删除。
一般来说,
Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1
Windows系统默认下载到:C:\Users(用户名).gradle\caches\modules-2\files-2.1

你可能感兴趣的:(搭建本地Maven私服,并使用Android Studio统一管理)