Android Studio发布及依赖Maven项目

1、前言:

由于项目的特殊性,封装了很多基础功能的实现,随着使用这些基础功能的项目增多,对于基础功能代码的版本管理出现了问题,思考后选择发布到Maven仓库,项目中远程依赖这些基础功能的方式解决此问题。

1.1、目标构建流程:

整体思路

解释一下:
1、项目工程、LIB工程的代码管理仍使用GIT
2、项目工程不直接依赖LIB工程,而是使用远程依赖,从远程仓库中(Nexus为远程仓库的一种)获取LIB工程生成的AAR或JAR
3、LIB工程的发布由Jenkins等自动化工具进行(手动发布也可以但不方便管理)

2、准备工作:

所需要的环境有:AndroidStudio、Nexus、GIT、Jenkins,其中,AndroidStudio、Nexus是必须的,GIT和Jenkins根据实际需要选择

2.1、搭建Nexus:

下载地址:https://www.sonatype.com/download-oss-sonatype
博主已Mac为例,下载后解压,运行以下命令则启动了nexus

cd nexus-3.3.0-01/bin
./nexus start

nexus的其他命令可通过 ./nexus -help 查看
浏览器访问:http://localhost:8081/ 打开nexus管理界面
默认账号:amdin 密码:admin123
下图的仓库地址,我们后面将用到。

获取仓库地址

3、Studio配置Maven

这里会分两部分讲,
1:LIB项目发布到仓库
2:工程项目配置对LIB项目的依赖

3.1、LIB项目发布到仓库

3.1.1、找到项目根目录的gradle.properties,添加以下公共常量,此处的仓库地址就是从2.1的图中位置获取

#maven仓库地址
MAVEN_REPO_RELEASE_URL=http://localhost:8081/repository/maven-releases/
MAVEN_REPO_SNAPSHOT_URL=http://localhost:8081/repository/maven-snapshots/
#登录nexus ossde的用户名
NEXUS_USERNAME=admin
#登录nexus oss的密码
NEXUS_PASSWORD=admin123
# groupid
GROUP_ID=com.ydp
# type jar或aar
TYPE=jar
# 项目描述
DESCRIPTION=Maven Test Lib

3.1.2、找到项目根目录的build.gradle,此处配置所有项目公用的脚本

//对所有项目配置依赖的仓库地址
allprojects {
    repositories {
        jcenter()
        maven { url MAVEN_REPO_SNAPSHOT_URL }
        maven { url MAVEN_REPO_RELEASE_URL }
    }
}
//对所有子项目配置
subprojects {
    apply plugin: 'com.android.library'
    apply plugin: 'maven'
    uploadArchives {
        configuration = configurations.archives
        repositories {
            mavenDeployer {
                //配置发布到的仓库地址
                snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) {
                    authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
                }
                repository(url: MAVEN_REPO_RELEASE_URL) {
                    authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
                }
                //项目属性
                pom.project {
                    //GROUPID+artifactId在maven中确定唯一位置
                    groupId GROUP_ID
                    //打包方式
                    packaging TYPE
                    //描述
                    description DESCRIPTION
                }
            }
        }
        task androidSourcesJar(type: Jar) {
            classifier = 'sources'
            from android.sourceSets.main.java.sourceFiles
        }
        artifacts {
            archives androidSourcesJar
        }
    }
}

3.1.3、找到要发布的某个module目录下的build.gradle文件

//在此处复写uploadArchives,用来配置module中不同的脚本
apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            pom.project {
                //版本号由各个子项目进行独立配置
                //后缀加-SNAPSHOT则为快照版本,去掉为release版本,会发布至不同仓库
                version '1.0.0-SNAPSHOT'
                //artifactId使用项目名
                artifactId 'testlib'
            }
        }
    }
}
//执行此task,将此module进行发布
task deploy(dependsOn: uploadArchives) {}

3.1.4、发布module
执行 指定module的 deploy即可

执行指定task

3.2、工程项目配置对LIB项目的依赖

3.2.1、找到项目根目录的gradle.properties,添加以下公共常量,此处的地址就是从2.1的图中位置获取

MAVEN_REPO_RELEASE_URL=http://localhost:8081/repository/maven-releases/
MAVEN_REPO_SNAPSHOT_URL=http://localhost:8081/repository/maven-snapshots/

3.2.2、找到项目根目录的build.gradle,此处配置所有项目公用的脚本

//对所有项目配置依赖的仓库地址
allprojects {
    repositories {
        jcenter()
        maven { url MAVEN_REPO_SNAPSHOT_URL }
        maven { url MAVEN_REPO_RELEASE_URL }
    }
}

3.2.3、找到项目工程需要依赖LIB工程的module目录下的build.gradle

dependencies {
    ....
    //此处规则为groupid:artifactId:版本号
    //版本号使用+或-SNAPSHOT表示使用最新的快照版本,发版时推荐使用release版本
    compile 'com.ydp:testlib:1.0+'
}

3.2.4、强制刷新依赖
由于gradle依赖下载后存在本地缓存,如果使用的快照版本则不会随着build而每次更新,如果需轻质刷新依赖,需要执行以下命令:

gradle build --refresh-dependencies

至此,完成了仓库搭建、LIB发布、LIB依赖

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,099评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,267评论 19 139
  • 姓名: 张娟 公司: 路易彬彦 【日精进打卡第106天】 【知~学习】 《六项精进》1遍共132遍 《大学》0遍 ...
    路易彬彥张娟阅读 1,229评论 0 0
  • Sophie0722阅读 1,841评论 0 1
  • 在离别的角落, 为你写着别离的歌, 希望有着童话般的幻梦, 再也不忍受现实的残阖。 也不必为我难过, 你看窗外, ...
    一片草药解了青春的毒阅读 2,885评论 7 11

友情链接更多精彩内容