1. 程式人生 > 其它 >android studio library 使用maven publish上傳到倉庫

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

publishPubNamePublicationToRepoNameRepositoryPublishToMavenRepository

PubName釋出釋出到名為RepoName的儲存庫如果您有一個沒有明確名稱的儲存庫定義,RepoName將是“Maven”。

publishPubNamePublicationToMavenLocalPublishToMavenLocal

PubName釋出與釋出的 POM 檔案和其他元資料一起複製到本地 Maven 快取——通常是$USER_HOME/.m2/repository

publish

取決於:所有任務publishPubNamePublicationToRepoNameRepository

將所有定義的釋出釋出到所有定義的儲存庫的聚合任務。包括複製出版物本地Maven快取。

publishToMavenLocal

取決於:所有任務publishPubNamePublicationToMavenLocal

將所有定義的釋出複製到本地 Maven 快取,包括它們的元資料(POM 檔案等)。

在library 專案的build.grade 檔案中新增

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 }