Android开发经验谈Android技术知识程序员

Android Maven 私有库

2019-09-26  本文已影响0人  CatchZeng

一、前言

Maven

image

Maven 是一个项目管理和自动构建工具。Maven 包是由 POM(Project Object Model)所定义的文件包格式。Maven 包集中存放的地方,就是 Maven 仓库。这些仓库,可以是放在本地,也可以放在某个远程服务器上。 可以是私有仓库,也可以是公开的。使用方式如下

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

Gradle 是一个基于 JVM 的构建工具,是一款通用灵活的构建工具,支持 Maven, Ivy 仓库,支持传递性依赖管理,而不需要远程仓库或者是 pom.xml 和 ivy.xml 配置文件,基于 Groovy,build 脚本使用 Groovy 编写。

Android 支持的 Maven 仓库:

二、搭建 Maven 私有库原因

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

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

三、搭建 Maven 私有库

Nexus

image

Nexus 是一个基于 Maven 的仓库管理的社区项目。主要的使用场景就是可以在局域网搭建一个 Maven 私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理。简单举个例子就是:第三方 Jar 包可以放在 Nexus 上,项目可以直接通过 Url 和路径配置直接引用。方便进行统一管理。同时有多个项目在开发的时候,一些共用基础模块可以单独抽取到 Nexus 上,需要用的项目直接从 Nexus 上拉取就行。封闭开发的过程中开发机是不能上公网的,所以连接 central repository 和下载 jar 就比较麻烦,这时就可以用 nexus 搭建起来一个介于公网和局域网之间的桥梁。

搭建

1、安装

前往 Nexus 官网 下载安装包,并解压存放到自己希望保存的目录。

2、启动

image

前往 nexus 存放位置下的 bin 文件夹,执行 ./nexus start。稍等 nexus 启动完毕,访问 http://127.0.0.1:8081 即可看到 nexus 欢迎页。

image

3、登录

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

image

4、创建仓库

image

仓库分了三种类型:

这里我们选择 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 库的搭建和使用,有问题的同学给我留言。

上一篇下一篇

猜你喜欢

热点阅读