Android本地Maven库创建及使用

在多数情况下,公司的多个项目都会有一些共通的核心库。一旦修改起来,多个项目来回修改很麻烦,也很容易乱。所以可以将相关的核心库提取出来做成一个library,创建一个本地maven库。多个项目引用起来就方便多了。维护起来也简单。

创建一个核心库的工程

  1. 创建一个新的Android工程,直接选择任意模板,或者Empty都可以

  2. 点击File -> New -> Moudule ->Android Library, 点击Next,然后需要配置包名等信息,点击Finish完成即可Android本地Maven库创建及使用_第1张图片

  3. 然后就在创建的Module中进行核心功能的开发。

其他工程引用aar

可分为以下几种方式

  • 通过aar文件方式
  1. 开发完成的库,直接执行Module下 assemble的gradle命令即可
    Android本地Maven库创建及使用_第2张图片
    右键Run这个task就会在build目录下的outputs目录中生成aar文件
    Android本地Maven库创建及使用_第3张图片

  2. 将aar文件拷贝到需要引用该库的工程的app/libs目录中.在app/build.gradle中配置参数,如下:

android{
	.
	.
	.
}
repositories {
    flatDir {
        dirs 'libs' //this way we can find the .aar file in libs folder
    }
}
dependencies {
	.
	.
	implementation (name:'core-release',ext:'aar')
	.
}

  1. 同步一下工程,即可开始使用该库了。
  • 通过本地Maven库(文件方式)
  1. Library下的build.gradle中添加maven插件
apply plugin: 'com.android.library'
apply plugin: 'maven'
  1. Library的build.gradle中添加maven配置
ext {
  //GITHUB_REPO_PATH = "E:\\private_maven" //windows
  GITHUB_REPO_PATH = "/User/ocean/private_maven" //Mac
  PUBLISH_GROUP_ID = 'com.ocean'
  PUBLISH_ARTIFACT_ID = 'core'
  PUBLISH_VERSION = '1.0.0'
}
/** uploadArchives,运行生成aar包 */
uploadArchives {
  repositories.mavenDeployer {
    def deployPath = file(project.GITHUB_REPO_PATH)
    repository(url: "file://${deployPath.absolutePath}")
    pom.project {
       groupId project.PUBLISH_GROUP_ID
       artifactId project.PUBLISH_ARTIFACT_ID
       version project.PUBLISH_VERSION
    }
  }
}
//源代码打包(需要打包源代码时添加以下配置)
task androidSourcesJar(type: Jar) {
  classifier = 'sources'
  from android.sourceSets.main.java.sourceFiles
}
artifacts {
  archives androidSourcesJar
}
repositories {
  mavenCentral()
}
  1. 配置完成以后,在Terminal运行 gradlew uploadArchives,也可在gradle中的upload目录中找到uploadArchives,右键Run也可以。执行完成后即可在配置的本地路径中看到上传的库,即/User/ocean/private_maven/目录下
    Android本地Maven库创建及使用_第4张图片
  2. 在需要引用该库的项目根目录的build.gradle中配置如下:
allprojects {
    repositories {
        google()
        jcenter()
        maven {url "file://Users/ocean/private_maven"}
    }
}
  1. 在app/build.gradle,正常引用依赖即可
dependencies {
	implementation 'com.ocean:core:1.0.0'
}
  • 通过本地Maven库(私服方式)
    以下配置均基于Mac系统
    1.下载Nexus 官网下载地址
    需要输入一个邮箱地址,然后点击Download,跳转到下载页面
    Android本地Maven库创建及使用_第5张图片

我下载的是nexus-3.26.1-02-mac
2.解压后有两个目录,nexus-3.26.1-02和sonatype-work目录,拷贝到/Users/ocean/目录下,获取其它你喜欢的目录都可以。
进入到nexus下的bin目录,执行nexus命令后显示Starting nexus

MBP:bin $ ./nexus start
Starting nexus

  1. 如果启动成功,打开 http://localhost:8081,默认用户名:admin
    密码在sonatype-work/nexus3/admin.password文件中,登录后会让修改密码,修改后,admin.password会被自动删除
    Android本地Maven库创建及使用_第6张图片

  2. 创建Repositories
    如下图位置,点击Create repository按钮 Android本地Maven库创建及使用_第7张图片

  3. 在下图列表选择maven2(hosted)
    Android本地Maven库创建及使用_第8张图片

  4. 输入Name,即库的名称,并且修改Hosted 的 Deployment policy:选择Allow redeploy,其他选项默认即可。点击Create repository进行创建
    Android本地Maven库创建及使用_第9张图片

  5. 创建成功后即可在列表看到刚刚创建的库
    Android本地Maven库创建及使用_第10张图片
    点击copy复制本库的地址:http://localhost:8081/repository/core/,在gradle配置中将会用到这个地址

  6. 配置gradle
    在需要发布的module下新建一个nexus_maven.gradle

apply plugin: 'maven'
configurations {
    deployerJars
}

repositories {
    mavenCentral()
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/repository/core/") {
                authentication(userName: "admin", password: "admin")
            }
            pom.project {
                name 'core'
                version '1.0.0'
                artifactId 'core'
                groupId 'com.xx'
                packaging 'aar'
                description 'library for awesome app'
            }
        }
    }
}

在module 下的build.gradle文件最后添加

apply from: 'nexus_maven.gradle'

同步工程后,即可在gradle窗口中看到uploadArchives任务
Android本地Maven库创建及使用_第11张图片
右键运行该task即可上传到刚刚创建的maven库地址中,点击Browse后如下图
Android本地Maven库创建及使用_第12张图片
点击即可看到库的内容
Android本地Maven库创建及使用_第13张图片
9.库的使用
在项目根目录的build.gradle中添加如下配置

allprojects {
    repositories {
        google()
        jcenter()
        maven {url "http://localhost:8081/repository/core/"}
    }
}

然后在使用该库的app/build.gradle中添加依赖即可

dependencies {
  implementation 'com.xx:core:1.0.0'
}

至此本地Maven库的创建和使用都完成了。希望对你有所帮助。

你可能感兴趣的:(Android)