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 }