Maven实现组件化方案

Maven实现组件化方案

1.有过组件化开发经历的童鞋,一定有一个很头大的问题:不同项目,依赖相同模块的时候,当这个共同的模块迭代需要的时候,我们总是需要手动移植好多次,而且容易出错。这无形中增加了工作量和出错率。因此,有没有一种可以共享的方式,来解决这种问题,看来是首当其冲
2.我曾今想过,可以通过

  • 版本控制仓库—— 分别管理具体的模块和组件
  • maven仓库版本控制仓库协同——代码可以托管到托管仓库,模块可以以aar,jar的形式放到maven仓库,通过maven或者gradle远程依赖

Maven方案(本地maven配合自己maven服务器使用,如果使用第三方maven直接跳到2)

1.搭建本地maven仓库:(通过gradle 的 uploadArchives task 完成)

  • gradle申明
apply plugin: 'maven'//maven插件
uploadArchives{//生成仓库的任务
    repositories.mavenDeployer{
        // 配置本地仓库路径,项目根目录下的repository目录中
        repository(url: uri('../repository'))
        pom.groupId = "com.zlj.groupId"// 唯一标识(通常为模块包名,也可以任意)
        pom.artifactId = "vViewPager" // 项目名称(通常为类库模块名称,也可以任意)
        pom.version = "1.0.0" // 版本号
    }
}

Maven实现组件化方案_第1张图片

  • 依赖方式
    1.申明仓库地址
allprojects {
 repositories {
     google()
     jcenter()
     //申明本地Maven仓库地址
     maven {
         url 'file:D:\\Android\\workePlace\\VViewPager_master\\repository'
     }
     
 }
}

2.依赖

implementation'com.zlj.groupId:vViewPager:1.0.0' //groupId:artifactId:version

2.远程maven

  • 自己搭建maven服务器
  • jitpack/Bintary ,第三方maven服务器;

1.这里只写了一下,bintary使用方法
2. 使用bintray-release 插件上传 集成地址


apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'com.novoda.bintray-release'

publish {
    userOrg = 'zljgroupid' //bintray账户下某个组织id
    groupId = 'fr.castorflex.android.vViewPager' //maven仓库下库的包名,一般为模块包名(Version control *)
    artifactId = 'vViewPager' //项目名称(Name*)
    publishVersion = '1.0.0' //版本号
    desc = '竖直viewPager' //项目介绍,可以不写
    website = '' //项目主页,可以不写
}



  1. 登录bintary 官网

  2. 创建group,生成groupId

  3. 创建仓库(Repository)

  4. 创建要上传的项目(addNewPackage)
    Maven实现组件化方案_第2张图片

  5. androidStudio——terminal——执行上传命令 (uId pId 替换成自己的 uId----->bintary的账号Id pId----自己的Key)
    Maven实现组件化方案_第3张图片

gradlew clean build bintrayUpload -PbintrayUser=uId    -PbintrayKey=pId  -PdryRun=false
  1. 上传成功以后,远程依赖
    Maven实现组件化方案_第4张图片
1.
allprojects {
   repositories {
   //项目gradle 中添加自己的maven库地址
       maven {url "https://dl.bintray.com/zljgroupid/maven"} 
   }
}
2.依赖项目
dependencies {
   implementation'fr.castorflex.android.vViewPager:vViewPager:1.0.0'
}

你可能感兴趣的:(小技巧)