0
点赞
收藏
分享

微信扫一扫

Android Module上传到Maven仓库

独西楼Q 2022-05-01 阅读 68

今天做了一个将Module上传到Maven仓库的功能,基本上就是把以前的代码拷了一份,在此记录一下,给有需要的童鞋参考。

1.新建maven_upload.gradle

在项目根目录下,新建 maven_upload.gradle

apply plugin: 'maven'

def REPOSITORY_URL = "http://xxxx.yyyy.你的maven服务器的地址/" //TODO <--- 请修改
def NEXUS_USERNAME = "maven服务器账号" //TODO <--- 请修改
def NEXUS_PASSWORD = "maven服务器密码" //TODO <--- 请修改
logger.info("groupId = %s\t\nartifactId = %s\t\nversion = %s\t\nrepository = %s\t\n", GROUP, POM_ARTIFACT_ID, VERSION_NAME, REPOSITORY_URL)
afterEvaluate { project ->
    uploadArchives {
        repositories.mavenDeployer {
            pom.groupId = GROUP
            pom.artifactId = POM_ARTIFACT_ID
            pom.version = VERSION_NAME
            repository(url: REPOSITORY_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
        }
    }
    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.sourceFiles
    }
    artifacts {
        archives androidSourcesJar
    }
}

注意这里的几个关键变量

  • REPOSITORY_URL : Maven服务器地址
  • NEXUS_USERNAME : Maven服务器的账号
  • NEXUS_PASSWORD : Maven服务器的密码

2.在想要上传的Library中添加

在想要上传的Library中添加如下代码,将GROUP、POM_ARTIFACT_ID修改为我们自定义的内容

ext.GROUP="com.heiko.android"
ext.POM_ARTIFACT_ID="mytest"
ext.VERSION_NAME=android.defaultConfig.versionName
//引用gradle_upload.gradle
apply from: "${project.rootDir}/maven_upload.gradle"

GROUP 、 POM_ARTIFACT_ID 、 VERSION_NAME 这三者 共同组成我们所需的一个依赖,比如 implementation 'com.heiko.mytest:1.0.0'

3.进行使用

添加上面的代码之后,我们点击sync,同步下代码
可以发现多了一个uploadArchives的Gradle Task
在这里插入图片描述
我们双击运行,一段时间后,出现如下成功的提示,说明就上传到maven仓库成功了
在这里插入图片描述

3.依赖上传的maven库

上传成功后,我们要如何进行依赖使用呢 ?

3.1 添加maven仓库地址

在一个新建的项目了,我们需要先添加maven仓库的地址

allprojects {
    repositories {
        //....此处省略了其他的maven库....
        maven {
            url "http://xxxx.yyyy.你的maven服务器的地址/" //TODO <--- 请修改
            credentials {
                username 'maven服务器的账号' //TODO <--- 请修改
                password 'maven服务器的密码' //TODO <--- 请修改
            }
        }
    }
}
3.2 进行依赖
dependencies {
    //...
    implementation 'com.heiko.android:mytest:1.0.0'
}
3.3 验证是否可以用

标准一 : 可引用module中的类、函数

标准二 : 可正常编译项目并正常跑在Android设备上

注意事项

Module中不能直接依赖其他的aar

Module中不能直接依赖其他的aar,如果有直接依赖其他的aar,会报Missing required attribute : dependency groupId的错误
请添加图片描述
所以,如果有直接依赖其他的aar,需要先将这些aar手动上传到maven仓库上,详见我的另一篇博客 手动上传aar到nexus maven仓库

Module中不能直接依赖其他的Module

Module不能存在嵌套关系,如果有存在嵌套关系,也会报上面的那个Missing required attribute : dependency groupId的错误

相关文章

我的其他和Maven相关的文章

Linux (Ubuntu) Android环境及Maven(Nexus3.X)配置
手动上传aar到nexus maven仓库
将Flutter项目打包aar上传maven

举报

相关推荐

0 条评论