Maven实现android组件化开发<狠简单>

  灵感来自前段时间和我一个朋友吃饭,说道他们公司当前组件化开发流程。

  1、Nexus安装配置流程

  实现该组件化开发需要Nexus工具,下载地址可以如下:

https://www.sonatype.com/download-oss-sonatype

  下载对应的版本的Nexus,这里我下载的如下图

Maven实现android组件化开发<狠简单>

  下载之后直接解压然后到指定的目录下启动该Nexus仓库即可,我的相对目录如下:(仅供参考)

nexus-2.14.5-02-bundle
exus-2.14.5-02injswwindows-x86-64

   在该目录下执行如下start-nexus.bat直接启动仓库即可。

  

  然后在浏览器访问http://localhost:8081/nexus进入到如下图:

Maven实现android组件化开发<狠简单>

   欢迎界面如上图,可以点击右上角login按钮,默认Nexus的账号和密码分别是admin admin123,输入账号密码完成登录如下图:

Maven实现android组件化开发<狠简单>

  点击add->HostedRepositories,然后如下图:

Maven实现android组件化开发<狠简单>

   这里需要填写Repository IDRepository Name,然后就是Deployment Policy这里尽量选择Allow Redeploy,否则同版本不允许重新(覆盖)发布,最后点击保存即可。

  2、Android Stuido项目创建AAR文件并且提交到仓库

  实现流程如下:

  第一步创建Android Module

    New -> Android Module -> Android Library

  第二步配置Module的build.gradle

    1、在该文件最顶部添加如下:    

apply plugin: 'maven'

    2、文件中添加如下:

uploadArchives {
    configuration = configurations.archives
    repositories.mavenDeployer {
        /*远程仓库的地址,貌似有具体ip的基本上都是建在局域网的仓库*/
        repository(url: "http://localhost:8081/nexus/content/repositories/android/") {/*仓库地址*/
            authentication(userName: "admin",/*用户名*/
                    password: "admin123")/*密码*/
        }

        pom.project {
            name 'testvideo-library'    /*项目的名称*/
            packaging 'aar'         /*要提交文件的类型*/
            description '测试视频组件定义'     /*描述*/
            url "http://localhost:8081/nexus/content/repositories/android/"/*仓库地址*/
            groupId "com.test.testvideo"  /*注册sonatype账号时有填,这里是域名反转+项目名*/
            artifactId "video"
            version '1.0.0'
        }
    }
}

  第三步:添加代码到仓库指定位置

    实现方式一:命令行方式

      在项目的根目录下执行如下命令:gradlew uploadArchives

     实现方式二:工具

      打开项目右上角gradle面板  

        点击如下图所示指定module下需要添加的aar文件到仓库

 Maven实现android组件化开发<狠简单>

       批注:这里说明下aar文件生成路径build/outputs/aar,这里建议每次修改提交前执行Rebuild Project。

    

    3、主Moudle引用AAR文件

      主项目根build.gradle文件添加本地仓库地址:

repositories{
        mavenCentral()
        maven {
            url "http://localhost:8081/nexus/content/repositories/android/"
        }
    }

      主项目build.gradle文件顶部添加如下:

        apply plugin: 'maven'
      然后在dependencies下添加引用
      
compile 'com.test.testvideo:video:1.0.0@aar'
   说明:AAR文件是Android自己特有的包,包含src目录文件和res目录文件,这里会涉及合并res文件(包含清单文件和drawable文件等,所以对明明规范就有了更高一步的要求)

  如上所有步骤实现则可以直接在主Module中直接调用对应的AAR文件里的Activity文件。这也就是实现了对应的组件化开发。囧....