美文网首页Android 知识android私服搭理
搭建本地Maven私服,并使用Android Studio统一管

搭建本地Maven私服,并使用Android Studio统一管

作者: 丨Fan | 来源:发表于2018-03-13 14:49 被阅读448次

    由于公司项目多,且都依赖于一个公共Library,导致Library有变动所有的被依赖者都需要重新修改、构建,很繁琐。而用Maven管理,只需添加如下的一行代码到模块的build.gradle文件中,就可以轻松解决问题了。

    //adnroid 3.0以下使用compile,3.0及其以上可以使用api/implementation
    //api/implementation的区别可以自行百度
    dependencies {
      implementation 'com.android.library:lib:+'
    }
    

    以下为笔者本地配置,用的是Mac系统

    配置Nexus

    1. 下载Nexus 官网地址

      Nexus示例.png
      笔者下载的是 nexus-2.14.8-01-bundle版本
    2. 解压后,即可以在安装目录下看到两个文件夹,主要是Nexus运行环境和存储Library。上传的Library会存放在下图storage下对应的文件夹中。


      Nexus_Path.png
    3. 命令行cd到nexus-2.14.8-01-bundle/bin目录下,使用命令 nexus start 启动Nexus。

      Nexus_start.png
    4. 如果启动成功,打开网页,访问 http://localhost:8081/nexus/
      默认用户名admin,密码admin123

      Nexus_login.png
    5. 登陆后,在左侧边栏点击Repositories。点击Add,选择Hosted Repository添加私有仓库。

      Nexus_repository.png
    6. 填写自己的Repository ID,Repository Name,把Deploymen Policy勾选为Allow Redeploy,然后其他默认就可以,点击保存。

      Nexus_create.png
      然后在列表中就可以找到我们的库在本地的地址http://localhost:8081/nexus/content/repositories/lib/,这个地址在后面会用到
      Nexus_lib.png

    配置Gradle

    1. 在需要发布的模块下新建一个nexus_maven_push.gradle,与build.gradle同层级
      Gradle.png
    2. nexus_maven_push.gradle中主要配置的内容有:url,authentication以及pom.project里面的信息
    apply plugin: 'maven'
    
    configurations {
        deployerJars
    }
    
    repositories {
        mavenCentral()
    }
    
    uploadArchives {
        repositories {
            mavenDeployer {
                repository(url: "http://localhost:8081/nexus/content/repositories/lib/") {
                    authentication(userName: "admin", password: "admin123")
                }
                pom.project {
                    name 'test'
                    version '1.0.0'
                    artifactId 'lib'
                    groupId 'com.android.library'
                    packaging 'aar'
                    description 'library for android'
                }
            }
        }
    }
    
    1. 在该模块下的build.gradle文件最后,添加
      apply from: 'nexus_maven.gradle'
    2. 在项目同步之后,就可以上传了


      Gradle_upload.png

      选择uploadArchives,如果项目没有什么问题的话,则会提示BUILD SUCCESSFUL。
      刷新网页,可以看到Library已经成功上传


      Gradle_upload_success.png

    Library使用

    1. 在项目的build.gradle里面声明私服的地址:
    allprojects {
        repositories {
            maven {
                url 'http://localhost:8081/nexus/content/repositories/lib/'
            }
            jcenter()
            google()
        }
    }
    
    1. 在需要使用该模块的build.gradle文件中,添加项目依赖。
    dependencies {
      implementation 'com.android.library:lib:+'
    }
    

    使用+是为了同步时,都会获取到最新的版本。当然固定版本号也是可以的。

    dependencies {
      implementation 'com.android.library:lib:1.0.0'
    }
    
    1. 这里的组成和提交的pom.project的信息有关。
      pom.png

    注意:上传所用Android Studio的Gradle版本,需要与下载所用的一致。

    关于Gradle缓存

    在执行过一次Gradle的同步之后,Gradle会把对应的Library的文件下载在本地,之后会直接使用。所以当我们删除旧的Library,用同样的pom.project信息重新上传一个新的Library时,执行Gradle同步,并不会更新最新的Library下来。这个时候可以到仓库存储路径下把对应的Library文件删除。
    一般来说,
    Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1
    Windows系统默认下载到:C:\Users(用户名).gradle\caches\modules-2\files-2.1

    相关文章

      网友评论

      本文标题:搭建本地Maven私服,并使用Android Studio统一管

      本文链接:https://www.haomeiwen.com/subject/tpxzfftx.html