發佈開源庫到Jcenter和Maven Central

前言:

在開發中,常常會使用第三方庫,通常是經過maven或gradle的方式引用。很方便,整個引用過程也就幾行配置代碼(gradle只用一行)。java

下面就是記錄將將本身的的庫開源出去的整個流程:

參照https://inthecheesefactory.com/blog/how-to-upload-library-to-jcenter-maven-central-as-dependency/en 【翻譯在此】
這裏已經很詳細了,接下來是實際操做過程當中應注意的地方:android

一、在Mac終端中,gradle的相關命令應 ./gradlew xxx這樣寫,如下都默認在Mac中git

二、在運行./gradew install時,會報github

Caused by: java.lang.NoClassDefFoundError: org/gradle/api/publication/maven/internal/DefaultMavenFactoryapi

當使用的Gradle版本是2.4以上,Android插件版本是1.3.0以上的時候就會出現這個問題,這時候咱們需在project的 build.gradle 文件中的插件版本添加一行
classpath ‘com.github.dcendents:android-maven-gradle-plugin:1.3’maven

三、在運行./gradlew bintrayUpload時,報gradle

What went wrong:
Execution failed for task ':library:bintrayUpload'.
Could not create package 'sujian27@163.com/maven/simplify': HTTP/1.1 401 Unauthorized [message:This resource requires authentication]ui

這是local.properites中的bintray.user配置錯誤致使的。在註冊bintray時,直接用github的帳號註冊的,這時候bintray.user應爲主頁顯示的那個名稱,而不是郵箱。spa

四、在運行./gradlew bintrayUpload時,報插件

What went wrong:
Execution failed for task ':library:bintrayUpload'.
Could not upload to 'https://api.bintray.com/content/timesfire/maven/simplify/0.1.0/com/github/timesfire/library/0.1.0/library-0.1.0.pom': HTTP/1.1 400 Bad Request [message:Unable to upload files: Maven group, artifact or version defined in the pom file do not match the file path 'com/github/timesfire/library/0.1.0/library-0.1.0.pom']

這個時候咱們的庫已經上傳到bintray上了,在對應的maven目錄下也有對應的tag生成,可是不能正常引用,這是由於須要上傳的庫工程對應的module名稱和咱們配置的不一致,默認的庫module名稱是library,只需重命名爲咱們配置的名稱便可,我這裏是重命名爲simplify。讓後先將bintray上已經生成的TAG刪除,從新運行上傳命令便可。

相關文章
相關標籤/搜索