Android Maven私有库搭建

一. 环境搭建

  1. 系统信息

    • 操作系统: Mac OS 10.14.5
    • Android Studio: 3.3
    • Kotlin: 1.3.11
    • Gradle: 4.10.1
  2. 安装
    官网下载最新的OSS nexus安装包,可能速度会有点慢,解压到系统的任一目录下即可, 我放到了应用程序的目录里。

  1. 启动

    • 终端切换到nexus bin的目录下

      1
      cd /Applications/nexus-3.17.0-01-mac/nexus-3.17.0-01/bin
启动 ./nexus start

nexus_01.png

  1. 修改默认端口

    • 在nexus配置文件目录下

      1
      /Applications/nexus-3.17.0-01-mac/sonatype-work/nexus3/etc
    • 找到配置文件 nexus.properties 修改application-port 为 8088

    • 重新启动nexus ./nexus restart

二. Maven仓库配置

  1. 浏览器进入 管理页面) , 通过默认的admin账号 admin123密码登录。 也有可能你的密码在/Applications/nexus-3.17.0-01-mac/sonatype-work/nexus3/password 这个路径里,去取一下就好

  2. 如图所示点击进入repository的配置页面
    nexus_02.png

  3. 点击create开始创建,然后选择maven host
    nexus_03.png

    nexus_04.png

  4. 进去之后输入仓库名 然后在下面的online打勾,创建完成后可以再仓库列表中见到刚刚创建的仓库

    nexus_05.png

三. 宿主工程 私有库Module设置

​ 示例说明: 以封装自定义“私有库 rtlogger”为例

  1. 新建宿主工程 RTLoggerLibHost

  2. 新建 module: rtlogger

    File->New->New Module->Android Library 设置 module 信息:

    Application/Library name: rtlogger Module name: rtlogger
    Package name: com.rtmart.lib.rtlogger

    完成后,可看到宿主工程下看到新增的“rtlogger module”:

  3. 宿主工程, build.gradle 配置
    指明支持 maven 私有仓库:

    1
    2
    3
    4
    5
    6
    7
    8
    allprojects{
    repositories{
    google()
    jcenter()
    //需要添加的
    mavenLocal()
    }
    }
  1. rtlogger module, build gradle 配置

    主要包括 3 个部分:

    1> 对 kotlin 的支持,如果封装的私有库中,包含了 kotlin 代码,必须添加此配置,否则,虽然也会打包发布成功,但是外部用私有库时,只能获取到 java 类,所有 kotlin 类均无法获取.

    2> 对 maven 的支持

    3> maven 仓库信息、私有库打包发布配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    //需要添加的 1:支持 kotlin
    apply plugin:'kotlin-android-extensions'
    apply plugin:'kotlin-android'
    //需要添加的 2:支持 maven 仓库
    apply plugin: 'maven'
    //需要添加的 3:发布配置
    uploadArchives{
    repositories.mavenDeployer{
    //仓库地址 + 账户
    repository(url:"http://10.200.244.100:8088/repository/MavenTest_chaox/"){
    authentication(userName:"admin",password:"admin123")
    }
    //私有库信息
    pom.version="1.0.0"
    pom.artifactId="rtlogger"
    pom.groupId="com.rtmart.lib"
    }
    }
    dependencies{
    //需要添加的支持kotlin
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    }
  1. 私有库 module 的 AndroidManifest.xml 配置

    如果私有库内,使用了一些系统权限(eg: 网络状态访问)、activity 等资源需在此配 置.

  2. rtlogger 私有库内部代码,简单起见,只定义一个打印 class:

    1
    2
    3
    4
    5
    public class RTLogger {
    public static void log(String str){
    Log.i("RTLogger", str);
    }
    }
  3. 发布 View->Tool Window->Gradle->RTLoggerLibHost->:rtlogger->Tasks->upload
    ->uploadArchives-> run RTLoggerLibHost:rtlogger

  4. 完成之后,可从 maven 仓库的 rtrepo 下找到 rtlogger 私有库

四。应用工程引用私有库

​ 新建项目,项目的gradle配置需要添加的maven,app gradle添加对私有库的依赖。然后代码中可以使用。

1
2
3
4
5
6
7
8
allprojects{
repositories{
google()
jcenter()
maven { url "http://10.200.244.100:8088/repository/MavenTest_chaox/"}
}
}