Android使用Maven Publish发布aar到Maven仓库

编写gradle脚本

  • 创建mavenpublish.gradle

将module的build.gradle文件复制一份并重命名为mavenpublish.gradle

Android使用Maven Publish发布aar到Maven仓库_第1张图片

  • 在mavenpublish.gradle中添加如下代码
apply plugin: 'maven-publish'

//生成文档注释
task androidJavadocs(type: Javadoc) {
    failOnError = false
    source = android.sourceSets.main.java.srcDirs
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath += files(ext.androidJar)
}
//将文档打包成jar
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    archiveClassifier.set('javadoc')
    from androidJavadocs.destinationDir
}
//将源码打包
task androidSourcesJar(type: Jar) {
    archiveClassifier.set('sources')
    from android.sourceSets.main.java.srcDirs
}


publishing {
    publications {
        dev(MavenPublication) {//dev是我取的名称,可以自定义
            groupId = 'com.miemie'//域名反写
            artifactId = 'indonesia_sdk'//aar的名称
            version = '1.0.7'//版本号
            artifact(androidSourcesJar)//将源码打包进aar,如果不需要可以去掉
            artifact(androidJavadocsJar)//将注释打包进aar,如果不需要可以去掉
            artifact "build/outputs/aar/sdk-release.aar"//aar包的目录
            pom.withXml{
                def dependenciesNode = asNode().appendNode("dependencies")
                configurations.implementation.allDependencies.forEach(){
                    Dependency dependency ->
                        if (dependency.version != "unspecified" && dependency.name != "unspecified"){
                            def dependencyNode = dependenciesNode.appendNode('dependency')
                            dependencyNode.appendNode('groupId', dependency.group)
                            dependencyNode.appendNode('artifactId', dependency.name)
                            dependencyNode.appendNode('version', dependency.version)
                        }
                }
            }
        }
    }
    repositories {
        maven {
            //maven仓库的地址
            url = "http://192.168.1.88:8081/repository/maven/"
            //仓库的用户名及密码
            credentials {
                username 'admin'
                password 'admin'
            }
            //没有maven仓库也可以使用本地仓库
//            url = "file://d:/mavenrepository"
        }
    }
}
  • 引用mavenpublish.gradle

在module的build.gradle文件中添加如下代码

apply from: './mavenpublish.gradle'

打包aar

使用gradle打包,aar存在目录build/outputs/aar/sdk-release.aar
Android使用Maven Publish发布aar到Maven仓库_第2张图片

上传aar到仓库

Android使用Maven Publish发布aar到Maven仓库_第3张图片

远程依赖

  • 项目根目录下的build.gradle中添加
allprojects {
    repositories {
    //仓库地址
        maven{url = 'http://192.168.1.88:8081/repository/maven/'}
        ···
    }
}

  • 在需要引用aar的module的build.gradle中添加
dependencies {
    //SDK
    implementation 'com.miemie:indonesia_sdk:1.0.7'
}

Note

这里需要注意的是:如果 implementation 'com.miemie:indonesia_sdk:1.0.7 后面加了@aar:implementation 'com.miemie:indonesia_sdk:1.0.7@aar,那么依赖该aar的项目无法使用aar中依赖的第三方库

你可能感兴趣的:(maven,android,java)