将自己的开源项目提交到JCenter

开始

最近自己写了一个开源控件,是有关标签流控件的(从服务器端获取标签,然后将标签自适应的放进一个容器里)。现在控件写完了,自己就想将它提交到Maven的中心仓库或者是JCenter。可是自己对maven不熟,并且用Android Studio写的工程提交到Maven的中心仓库确实比较繁琐,所以决定还是用JCenter。

申请账号

关与项目提交到JCenter,网上有个教程写的很好,我基本上也是参照上面来做的,但是途中也遇到了一些坑,所以觉得还是有必要叙述一下的。首先你要做的是申请Bintray账号,它是JCenter的托管商,注册完成之后,你需要来到这个界面,记住你的账户名和API key,我一般将它放在local.properties文件中。因为我们待会会用到,做完这些后,你的第一步差不多即完成了。

//local.properties
sdk.dir=/Applications/ADT/sdk
bintray.user = fyales
bintray.apikey = *************************

配置工程的build.gradle文件和你要提交的Module的build.gradle文件

下面我们来看build.gradle文件:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath ‘com.android.tools.build:gradle:1.1.0‘
        classpath ‘com.github.dcendents:android-maven-plugin:1.2‘
        classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0‘
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

这里我们用的仓库是JCenter而不是MavenCentral。并且我们需要引入官方提供的两个插件android-maven-plugin和gradle-bintrayl-plugin,这样便于我们提交项目到JCenter.

接下来就是配置Module的build.gradle文件了

 apply plugin: ‘com.android.library‘
apply plugin: ‘com.github.dcendents.android-maven‘
apply plugin: ‘com.jfrog.bintray‘
// 提交到仓库中的版本号
version = "1.0.0"

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
        }
    }
}

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    compile ‘com.android.support:appcompat-v7:21.0.2‘
}

def siteUrl = ‘https://github.com/fyales/tagcloud‘      // 项目的主页
def gitUrl = ‘https://github.com/fyales/tagcloud.git‘   // Git仓库的url
group = "com.fyales.android"
install {
    repositories.mavenInstaller {
        pom {
            project {
                packaging ‘aar‘
                name ‘Android TagCloud‘    //项目描述
                url siteUrl
                licenses {
                    license {
                        name ‘The Apache Software License, Version 2.0‘
                        url ‘http://www.apache.org/licenses/LICENSE-2.0.txt‘
                    }
                }
                developers {
                    developer {
                        id ‘fyales‘        //填写的一些基本信息
                        name ‘fyales‘
                        email ‘[email protected]‘
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = ‘sources‘
}
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = ‘javadoc‘
    from javadoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}

Properties properties = new Properties()
properties.load(project.rootProject.file(‘local.properties‘).newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    configurations = [‘archives‘]
    pkg {
        repo = "maven"
        name = "TagCloud"    //发布到JCenter上的项目名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

这串代码主要做了三件事

  • 生成JavaDoc
  • 生成Jar
  • 配置我们项目的信息

在这里我要提醒一下,生成javadoc和jar是必选选项。一开始我认为做这些没有必要,所以没有写入生成javaDoc和jar的命令,于是,我收到了bintray的官方邮件(邮件中是另外一个项目):

Bintray (bintray) has sent you a direct message from Bintray:

Hi, 

Jcenter hosts java applications that follows maven convention.
In addition to the .aar and pom files in the path: /com/fyales/parser/1.0.0
, your version should include a sources jar, and optionally a javadoc jar. 

Your files should be under a maven path layout.
(see https://bintray.com/docs/usermanual/uploads/uploads_includingyourpackagesinjcenter.html)

Once those files are added, we‘ll be glad to include your package in JCenter.

Regards,
Bintray Support

在这边还有一个坑我写的javadoc命令一开始运行失败,这是因为我喜欢在我的注释这样写

@author fyales
@date

因为javadoc里面并没有@date,所以会解析失败,大家也要注意一下。。。。。。。

做完这些后,就可以运行下面的命令将你的项目提交到Bintray了

./gradlew bintrayUpload

最后的步骤

提交完成之后,你就可以申请你的项目到JCenter,点击Include My Package,在弹出的界面输入你的项目名称确定就可以了,当审核通过后,你就可以直接用你自己项目了.

dependencies {
    compile ‘com.fyales.android:library:1.0.0‘
}

其他注意点

build失败(失败原因Cannot call getBootClasspath() before setTargetInfo() is called.)

解决方案:将gradle版本升级到1.2

总结

JCenter相较于Maven Central还是很方便的,另外就是在软件开发过程中,有时候也要知其然,也要知其所以然。

口号:Make things interesting!

参考

使用Gradle发布项目到JCenter仓库

时间: 2024-10-10 14:53:15

将自己的开源项目提交到JCenter的相关文章

AndroidStudio怎么将开源项目发布到jcenter

如何把自己写的项目让别人依赖呢,像compile 'com.google.code.gson:gson:2.6.2'一样? 上面的依赖library需要3各部分,即:GROUP_ID:ARTIFACT_ID:VERSION,其中GROUP_ID是com.google.code.gson(库的包名),ARTIFACT_ID是gson(类库名称),VERSION是2.6.2(版本号). 怎么上传你的类库到jcenter仓库? 基本上大致的步骤可以慨括为,在AndroidStudio上准备好要上传的库

AndroidStuio快速发布开源项目到Jcenter/Bintray

AndroidStuio快速发布开源项目到Jcenter/Bintray 版权声明:转载请注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 QQ交流群1:46505645 QQ交流群2:46523908 群资源有限,请不要重复加群,谢谢. 前言 最近做了两个开源项目,一个是Android网络框架NoHttp,和Volley.OkHttp一样做客户端请求的,更多相关信息请百度哦:另一个是Android Web服务器框架AndServer,用来在An

[转]使用Gradle发布Android开源项目到JCenter

转自:http://blog.csdn.net/maosidiaoxian/article/details/43148643 使用Gradle发布Android开源项目到JCenter 分类: Gradle笔记2015-01-26 09:41 8508人阅读 评论(33) 收藏 举报 gradle发布jcenter发布项目 目录(?)[+] 喜欢做些开源项目的朋友,相信有不少人都希望能把自己的项目发布到公共的中央仓库,如maven中央仓库,以供别人方便地集成使用.而使用了Android Stud

Android 快速发布开源项目到jcenter

转载请标明出处(请勿转载删除底部微博.微信等信息): http://blog.csdn.net/lmj623565791/article/details/51148825: 本文出自:[张鸿洋的博客] 大家在很多时候都希望让自己的开源项目可以更方便的让用户去使用,那么对于Android平台,一个很好的方式就是上传到jcenter,然后使用时通过添加compile引用即可. 对于上传到jcenter,也不算技术类的文章,而且已经有很多较好的文章可以参考,写之前我也大致百度了一下. 目前很多文章都是

Android项目实战(三十八):2017最新 将AndroidLibrary提交到JCenter仓库(图文教程)

我们经常使用github上的开源项目,使用步骤也很简单 比如: compile 'acffo.xqx.xwaveviewlib:maven:1.0.0' 这里就学习一下如何将自己的类库做出这种可以供他人使用的开源项目. 一.Android studio项目准备 这时候我们想写了一个自定义控件,想要传到github上让别人使用. 1.先在该项目下创建一个Module 2.选择Android Library 3.填写类库名称 4.此时的目录结构 注意,开源出去的是library类库,所以需要在类库中

CM13添加SudaMod开源项目的来去电归属地,查看commit提交记录

这个问题纠结了很多时间,感谢苏打先森@Sudamod的开源项目. 大家知道CM13是没有来去点归属地的,就算有那也是google,对于中国人不适用,所以这里把方法贡献出来. 1.与通话有关的app Dialer InCallUI Contact Telcom 2.与app有关的开源地址 https://github.com/SudaMod/android_packages_apps_Dialer/tree/sm-2.0 https://github.com/SudaMod/android_pac

一步一步教你将开源项目上传到jcenter

最近闲着看了一下jcenter的使用,也想将自己使用频率比较高的东西抽成类库,然后通过compile来使用,提高开发效率,本来以为挺简单的,但是网上介绍的比较模糊,很多博客也比较老了,不适用,花了我一天的时间,还是走了很多弯路,这里记录下来,希望能帮助到小伙伴们,现在觉得还是挺简单的.第一步:首先是注册,这就是我踩的最大的一个坑,导致我一天都没有上传成功.网上说的都是去jcenter的网站上注册就可以,其实不然,英文好的最好去看英文文档,一步一步来操作.个人正确的注册地址:https://bin

我的开源项目与社区提交

开源项目 kubesql 项目地址:https://github.com/xuxinkun/kubesql 项目介绍:kubesql是一个使用sql查询kubernetes资源的工具.诸如node,pod等kubernetes的资源被处理为table,而后可以使用sql语句对其进行查询. littleTools 项目地址:https://github.com/xuxinkun/littleTools 项目介绍:根据日常运维时编写的一个小工具,主要用于简化命令docker和kubectl的输入,使

【凯子哥带你学Android】Android专用Log开源项目——KLog

在Android开发和调试的过程中,Log的使用是非常频繁的,一个好的Log工具可以帮你节省很多时间,所以凯子哥抽空写了个这个开源项目KLog,希望可以帮助大家提高开发效率,本开源库的灵感来自于Logger KLog的特点 运行演示 使用详解 KLogd KLogdString KLogdTagString KLogjsonString KLogjsonTagString 注意事项 使用JCenter引用 为什么叫KLog 如何设置Log的颜色 项目地址 KLog的特点 支持显示行号 支持显示L