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
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM