美文网首页
构建私有的Maven仓库

构建私有的Maven仓库

作者: f1abf4d2779c | 来源:发表于2017-09-21 20:44 被阅读105次

一、场景

公司有多个项目并行开发,项目间有一些通用模块,由于基于Android Studio开发,无法像Eclipse那样可以多个项目引用同一个Library,导致几个项目间的通用模块复用非常麻烦和困难。

二、需求

随着公司App项目越来越复杂,希望可以抽离一个基础服务,由专门的人员进行维护和部署,提供给其他的项目使用,并保证核心代码不泄露。

三、Maven私服搭建

使用Nexus搭建一个公司内部使用的Maven私服,用来部署基础库,其他项目通过gradle下载和编译基础库。关于Nexus的介绍和配置很简单,具体可以查看这里:Android 项目部署之Nexus私服搭建和应用

四、上传库至私服

在project下的gradle.properties文件中定义Nexus上传所需的通用属性,方便如果有多个库需要部署时,不需要修改每一个库中的配置。

#本地库的nexus地址
MAVEN_URL=http://192.168.21.51:8081/repository/OneMTSDKFramework/
MAVEN_SNAPSHOT_URL=http://172.28.1.*:8081/nexus/content/repositories/thirdparty-snapshot/
#登录nexus的用户名
NEXUS_USERNAME=admin
#登录nexus的密码
NEXUS_PASSWORD=admin123
#项目的Group id
GROUP_ID=com.sc.framework
#项目文件类型
TYPE=aar
#项目描述
DESCRIPTION=this is project decription

修改module对应的build.gradle文件,配置以谁的名义上传这个库,上传到什么地方,这个库叫什么名字,属于哪个group,ID和version、description、packageing等信息。

apply plugin: 'maven'

uploadArchives {
    configuration = configurations.archives
    repositories {
        mavenDeployer {
            snapshotRepository(url: MAVEN_SNAPSHOT_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            repository(url: MAVEN_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            pom.project {
                version '1.0.0'
                artifactId 'PrivateFramework'
                groupId GROUP_ID
                packaging TYPE
                description DESCRIPTION
            }
        }
    }
}

artifacts {
    archives file('PrivateFramework.aar')
}

打开Gradle projects(在AS的右边栏),找到对应的module,展开,找到Tasks下面的upload标签并双击,在Gradle Console标签可以查看是否上传成功。

五、使用已上传的库

在project的build.gradle文件中指定私有仓库的地址:

allprojects {
    repositories {
        jcenter()
        maven { url 'http://192.168.21.51:8081/repository/PrivateFramework'}
    }
}

在需要依赖私有仓库的build.gradle文件中设置依赖关系:

compile 'com.sc.framework:privateframework:1.0.0'

相关文章

网友评论

      本文标题:构建私有的Maven仓库

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