zoukankan      html  css  js  c++  java
  • 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
    }
     
  • 相关阅读:
    CF 441E Valera and Number
    CodeForces 1111E. Tree
    CodeForces 1098F. Ж-function
    CodeForces 1098E. Fedya the Potter
    CodeForces 1098D. Eels
    CodeForces 1103E. Radix sum
    CodeForces 1103D. Professional layer
    CodeForces 1103C. Johnny Solving
    CodeForces 1107F. Vasya and Endless Credits
    Hackerrank: Week of Code 36
  • 原文地址:https://www.cnblogs.com/rchao/p/15701764.html
Copyright © 2011-2022 走看看