使用Gradle提交本身開源Android庫到Maven中心庫

如下內容爲原創,歡迎轉載,轉載請註明html

來自每天博客:http://www.cnblogs.com/tiantianbyconan/p/4388175.html android

 

此文針對開源愛好者。git

若是你想讓別人使用你的Android開源庫,第一種方法是,提供你的Github地址,讓別人clone一份,而後讓別人import到他的項目中。另外一種更簡單的方式就是直接讓別人在他的Gradle中添加你的庫依賴,以下:github

compile 'com.github.wangjiegulu:AndroidBucket:1.0.1'

若是想使用第二種方式,你須要將你的項目提交到公共的中心庫。apache

這裏介紹使用sonatype來把你的開源庫(snapshot或release)提交到Maven的中心庫。
app

1. 首先,在https://issues.sonatype.org中註冊帳號。jsp

2. 而後在https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134中新建一個「Project ticket」。maven

-Summary:填寫項目名稱
ide

-Description:填寫描述gradle

-Group Id:域名反轉,若是沒有域名,就直接使用github反轉(如github.com/wangjiegulu --> com.github.wangjiegulu),具體看http://central.sonatype.org/pages/choosing-your-coordinates.html

-Project URL:項目的url,能夠是項目的github地址。如https://github.com/wangjiegulu/AndroidBucket

-SCM url:版本控制的uri,如https://github.com/wangjiegulu/AndroidBucket.git

3. 建立完畢後就等待狀態變爲「resolved」,而後你就可使用Gradle上傳項目了。

4. 上傳前須要進行GPG簽名,因此先去下載GPG(https://www.gnupg.org/download/index.html),而後打開

新建一個Keychain,完成後右鍵「Send Public Key to Key Server」,這樣就能把你的public key發送到服務端。

5. 而後咱們再打包項目的aar文件,intellij idea和android studio使用gradle構建後,會在build中自動生成該文件,直接把他拷出來便可。

6. 而後新建build.gradle來進行咱們的上傳操做,大概內容以下:

複製代碼

// *********************************************************************apply plugin: 'maven'apply plugin: 'signing' //使用signing plugin作數字簽名//定義GroupID和Version,ArtefactID會自動使用Project名group = 'com.github.wangjiegulu'version = '1.0.1'repositories {
    mavenCentral();
}

artifacts {
    archives file('AndroidBucket.aar')
}
signing {
    sign configurations.archives
}uploadArchives {
    repositories {
        mavenDeployer {            //爲Pom文件作數字簽名
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }            //指定項目部署到的中央庫地址,UserName和Password就是Part 1中註冊的帳號。
            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: o***hUsername, password: o***hPassword)
            }
            snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: o***hUsername, password: o***hPassword)
            }            //構造項目的Pom文件,參見Part 2中Pom文件的規範,不要遺漏必填項            pom.project {
                name project.name
                packaging 'aar'
                description 'Android開發經常使用整理'
                url 'https://github.com/wangjiegulu/AndroidBucket'

                scm {
                    url 'scm:git@github.com:wangjiegulu/AndroidBucket.git'
                    connection 'scm:git@github.com:wangjiegulu/AndroidBucket.git'
                    developerConnection 'git@github.com:wangjiegulu/AndroidBucket.git'
                }

                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        distribution 'wangjie'
                    }
                }

                developers {
                    developer {
                        id 'wangjie'
                        name 'Wagn Jie'
                        email 'tiantian.china.2@gmail.com'
                    }
                }
            }
        }
    }
}

複製代碼

archives file('AndroidBucket.aar') 表示指定上傳的aar文件。

signing {
    sign configurations.archives
}

表示對內容進行gpg簽名,既然須要簽名,那須要在gradle.properites中配置key的信息,還有上傳的帳號密碼:

signing.keyId=XXXXXXXXX
signing.password=XXXXXXXXXsigning.secretKeyRingFile=/Users/wangjie/.gnupg/secring.gpg

  o***hUsername=oss.sonatype.org或者issues.sonatype.org的帳號(同一個)
  o***hPassword=oss.sonatype.org或者issues.sonatype.org的密碼(同一個)

全部配置完畢後執行gradle uploadArchives進行上傳操做。

7. 登陸https://oss.sonatype.org,點擊左邊的「Staging Repositories」,而後剛剛上傳的項目名稱爲com.github.wangjiegulu去掉點-數字

選中後點擊「Close」,若是成功,則再點擊「Release」按鈕發佈。

而後再等待2小時,就能夠在Maven中心庫中搜索到了。

 

注意:之後若是須要再上傳其它項目的時候,直接從第4步開始便可,由於你的groupId已經申請過了,之後新的artifacts能夠直接部署到這個groupId中。

 

參考:http://central.sonatype.org/pages/o***h-guide.html

相關文章
相關標籤/搜索