android studio library 使用maven publish上传到仓库

grade文档地址

https://docs.gradle.org/current/userguide/publishing_maven.html#header

任务

generatePomFileForPubNamePublication生成MavenPom

为名为PubName的发布创建 POM 文件,填充已知元数据,例如项目名称、项目版本和依赖项。POM 文件的默认位置是build/publications/$pubName/pom-default.xml

publishPubNamePublicationToRepoNameRepository— PublishToMavenRepository

PubName发布发布到名为RepoName的存储库如果您有一个没有明确名称的存储库定义,RepoName将是“Maven”。

publishPubNamePublicationToMavenLocal— PublishToMavenLocal

PubName发布与发布的 POM 文件和其他元数据一起复制到本地 Maven 缓存——通常是$USER_HOME/.m2/repository

publish

取决于:所有任务publishPubNamePublicationToRepoNameRepository

将所有定义的发布发布到所有定义的存储库的聚合任务。包括复制出版物本地Maven缓存。

publishToMavenLocal

取决于:所有任务publishPubNamePublicationToMavenLocal

将所有定义的发布复制到本地 Maven 缓存,包括它们的元数据(POM 文件等)。

 

 

 

在library 项目的build.grade 文件中添加


apply plugin: 'maven-publish'
task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
    classpath += files(ext.androidJar)
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    // 分类器 生成api文档jar
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

// 上面的两个task 如果不需要生成文档说明的jar的话 删除上面的两个task
// 然后把 publications 中配置的 artifact(androidJavadocsJar) 删除即可

afterEvaluate { project ->
    tasks.all { task ->
        if (task.name.equalsIgnoreCase('publishTestLibPublicationToMavenRepository')) {
            // task.dependsOn 这里表示 后面的任务执行完成以后才执行当前任务(publishTestLibPublicationToMavenRepository)
            task.dependsOn tasks.getByName('assemble')
        }
    }
}
// 名称
def pom_artifact_id = project.getName()
// 分组
def group_id = "com.chao.test"
// 本地仓库 也可以设置在线maven仓库
def local_repo_url = "file:///D:/android-library-test"
// 版本号
def version_name = "0.0.1"

afterEvaluate {
    publishing {
        publications {
            // pushlish任务名字 TestLib
            // 可以配置多个任务 这里配置了一个
            TestLib(MavenPublication) {
                groupId = group_id
                artifactId = pom_artifact_id
                version = version_name

                artifact("$buildDir/outputs/aar/${pom_artifact_id}-release.aar")
                artifact(androidJavadocsJar)
            }
        }


        repositories {
            maven {
                //name: "Maven"
                url local_repo_url
                // 在线maven仓库地址 一般都需要登录才能上传
                // 所以需要配置用户名和密码
                //credentials {
                    //username = "用户名"
                    //password = "密码"
                //}
            }
        }
    }
}

// 推送到配置的maven仓库
// publish`TestLib`PublicationTo`Maven`Repository
// TestLib 对应publish任务的名字
// Maven 对象仓库的name 如果配置了一个仓库 没有没配置名字 使用Maven 即可 如果配置了name   这里需要使用name
task publishLibToRepo(dependsOn: ['build', 'publishTestLibPublicationToMavenRepository']) {
    group = group_id
}

 

 
posted @ 2021-12-17 13:52  荣超  阅读(1495)  评论(0编辑  收藏  举报