文档章节

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

fyales
 fyales
发布于 2015/03/10 16:27
字数 1043
阅读 2740
收藏 6

开始

最近自己写了一个开源控件,是有关标签流控件的(从服务器端获取标签,然后将标签自适应的放进一个容器里)。现在控件写完了,自己就想将它提交到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 'fyales@gmail.com'
                    }
                }
                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仓库

© 著作权归作者所有

fyales
粉丝 1
博文 18
码字总数 21081
作品 0
浦东
程序员
私信 提问
加载中

评论(1)

linwoain
linwoain
楼主,升级gradle版本到1.2是怎么做,能否将具体步骤说明一下,现在遇到了这个问题
FileDownloader 很棒的文件下载库

有一个很好用的文件下载库,这里做个记录; 1、内容大纲 文件库源码导入项目 com.jfrog.bintray的作用 2、文件下载开源库使用 先说说这个这个优秀文件下载开源库:FileDownloader 下面是部分...

_无问西东
2018/09/12
286
0
Android 上传开源项目到 jcenter 实战踩坑之路

本文微信公众号「AndroidTraveler」首发。 背景 其实 Android 上传开源项目到 jcenter 并不是一件新鲜事,网上也有很多文章。 包括我本人在将开源项目上传到 jcenter 的时候也是参考了一些文...

AndroidTraveler
07/05
0
0
Android Jcenter 依赖完整版

Jcenter 依赖完整版 测试环境: github仓库(码云仓库无法依赖)、Jcenter仓库、Android Studio2.2.2、Gradle 2.14.1、TortoiseSVN 1.9.6。 在github上注册账号并创建项目(其具体创建方法自行查...

凌浩雨
2017/09/11
0
0
教你把自己Adnroid代码上传到JCenter

上传项目到JCenter 1.去JCenter官网注册个账号,这里有一个问题,就是国内的邮箱好像不行,xxxxxxx@163.com xxxxxx@qq.com都不可以。 这里推荐一个:outlook邮箱。…… 因为我就是用这个的 ...

xiaolei123
2017/04/01
63
0
Android Studio发布项目到Jcenter仓库步骤

前言:Android Studio中把项目的lib库提交到Jcenter仓库中,需要使用到Bintray,Bintray是jCenter的提供商,他支持上传lib到多个平台,jCenter只是众多平台中的一个,形象的说jCenter是位于某...

Hans的博客
2018/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Rust 的 GUI 框架生态概览

本文比较全面比较了目前主流的 Rust 的 GUI 框架的表现。其中 ++ 表示非常好,-- 表示非常差,而 o 表示处于平均水平。 参与对比的框架共有 8 个,详细的比较结果如下: Electron + Neon El...

红薯
33分钟前
4
0
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
4
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
3
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部