搜索
您的当前位置:首页正文

Android Maven 私有库

来源:知库网

一、前言

Maven

image
allprojects {
    repositories {
        mavenCentral();
        jcenter()
        maven {
            url 'file:///Users/name/Documents/Android/repo/'
        }
        maven {
            url 'http://x.x.x.x:8081/nexus/repositories/android/'
        }
    }
}

Gradle

image

Android 支持的 Maven 仓库:

  • mavenCentral:最早的 maven 中央仓库
  • jcenter:Android Studio 0.8 版本起的默认 maven 中央仓库
  • 本机仓库
  • 内网服务器的私有仓库

二、搭建 Maven 私有库原因

每一种技术,每一个框架都不是凭空产生,都是为了解决特定需求。因此使用什么技术取决于我们的需求,作为一个研发人员,我们不仅仅要懂得编码,更要有洞察真实需求的能力

做开发时间长的同学一般都会开发多个 App。而这些 APP 有很多共同的部分,比如一些工具类,自定义 UI,视频播放功能等甚至是框架。为了提高整体团队的开发效率,不重复造车轮子,我们便会设想把这些可以复用的代码通过一种特殊的方式进行管理。而 Maven 正符合我们的要求。这样做有几点好处:

  • 实现模块化,不同功能模块可以单独引入,优化实现方式,符合类似单一原则

  • 对各个模块进行版本迭代更新,执行持续集成。某个模块修改了,跑单元测试,通过后才放上仓库,保证模块质量。

  • 带版本管理,有问题还可以回滚到上一个版本

  • 组件化,按功能拆分出各种组件,数据存储、网络层、日志 等。提高代码复用率

  • 私有库带缓存,可提高引用公开模块的速度

三、搭建 Maven 私有库

Nexus

image

搭建

1、安装

2、启动

image image

3、登录

使用用户名 admin 和默认密码 admin123 登录,即可创建和管理用户。

image

4、创建仓库

image

仓库分了三种类型:

  • hosted(宿主仓库):用来部署自己,第三方或者公共仓库的构件
  • proxy(代理仓库):代理远程仓库
  • group(仓库组):统一管理多个仓库

这里我们选择 hosted 作为私有库类型,创建 test 仓库。

image

四、上传私有库

新建 testutils module,并新建 Utils 测试类。

image

在项目的 build.gradle 中加入 mavenLocal

allprojects {
    repositories {
        google()
        jcenter()
        //需要添加的
        mavenLocal()
    }
}

到 testutils 的 build.gradle 中添加 maven 信息

apply plugin: 'com.android.library'

//需要添加的
apply plugin: 'maven'

//需要添加的
uploadArchives {
    repositories.mavenDeployer {
        repository(url:"http://127.0.0.1:8081/repository/test/") {
            authentication(userName:"test", password:"123456")
        }
        pom.version="1.0"
        pom.artifactId="testutils"
        pom.groupId="com.test"
    }
}

android {
    compileSdkVersion 28



    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

注:

repository 的 url 可访问 nexus 进行复制

image

sync 完 gradle 后,打开 gradle 选项,找到 upload,进行上传。

image

上传成功后,即可前往 nexus 查看。

image

五、使用私有库

在项目的 build.gradle 中加入私有 Maven 库

allprojects {
    repositories {
        google()
        jcenter()
        //需要添加的
        maven { url "http://127.0.0.1:8081/repository/test/" }
    }
}

在需要引用私有库的 module 的 build.gradle 中引用私有库

implementation 'com.test:testutils:1.0'

注:不是 com.test.testutils 而是 com.test:testutils

sync 完 gradle 后,即可在 module 中引用

image

至此,我们完成了私有 Maven 库的搭建和使用,有问题的同学给我留言。

Top