zoukankan      html  css  js  c++  java
  • 一步一步教你将开源项目上传到jcenter

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


    这里写图片描述

    注:这里用普通的邮箱(qq,163这些都不好使)是行不通的,最好使用google邮箱或者outlook邮箱。
    注册完成后界面是这样的,看下图:


    这里写图片描述

    但是,如果你注册后界面是下面这样的:


    这里写图片描述

    看不到New Repository,就说明你注册错了,踩了我的第一个坑。删除账号信息后,重新注册吧。
    注册完成后我们点击Add New Repository,新建一个仓库。
    注:创建的maven仓名字和类型都要写成maven,如下图所示:


    这里写图片描述

    然后我们开始获取user和key,至于为什么要,我们后面再说:


    这里写图片描述

    这里写图片描述

    这样我们jcenter的工作就做好了,然后准备我们上传的开源项目,这个比较简单,我就随便说了。
    第一步:先新建一个项目,然后在这个项目下新建一个Android LIbrary的Module,自己的开源库就在这个Module里面开发,如下图:


    这里写图片描述

    第二步:
    在这个新建的Module里面,开发自己的开源项目,然后,在原来的项目里是可以直接引用Module里在代码的。但运行的时候会报错,需要在项目的build.gradle中添加如下代码:
    compile project(':CommonUtilLibrary')

    后面单引号里面,是自己创建的Module名字。
    然后,再重新运行整个项目,就可以把Module也编译进去了。
    第三步:
    编写工程的build.gradle文件,记住,是工程的。
    先打开项目的build.gradle文件,一定是项目的build文件,然后在里面添加如下代码:
    buildscript {
    repositories {
    jcenter()
    }
    dependencies {
    classpath 'com.android.tools.build:gradle:2.3.1'
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
    }
    }
    记住,代码有的就保留下来,没有的加上去。
    注意:这里Sync有时候会报 Error:(2, 0) No service of type Factory...这样的错误,主要是因为这一行:
    classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
    如果报错了的话,就自己去官网上看最新的插件版本号,改了就可以了。
    这里添加完后完整的build.gradle应该是这样的:


    这里写图片描述

    然后再打开将要上传的Module的build.gradle文件,添加如下代码:
    apply plugin: 'com.github.dcendents.android-maven'
    apply plugin: 'com.jfrog.bintray'

    def siteUrl = 'https://github.com/caijin199410/CommonUtil.git' // 项目的主页 这个是说明,可随便填
    def gitUrl = 'https://github.com/caijin199410/CommonUtil.git' // Git仓库的url 这个是说明,可随便填
    group = "com.abrahamcaijin" // 这里是groupId ,必须填写 一般填你唯一的包名,对应com.squareup.okhttp3:okhttp:3.4.1中的com.squareup.okhttp3部分

    install {
    repositories.mavenInstaller {
    // This generates POM.xml with proper parameters
    pom {
    project {
    packaging 'aar'
    // Add your description here
    name 'CommonUtil' //项目描述
    url siteUrl
    // Set your license
    licenses {
    license {
    name 'The CommonUtil Software License, Version 1.0.0'
    url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
    }
    }
    developers {
    developer {
    id 'caijinabraham' //填写开发者的一些基本信息
    name 'caijinabraham' //填写开发者的一些基本信息
    email 'caijinabraham@outlook.com' //填写开发者的一些基本信息
    }
    }
    scm {
    connection gitUrl
    developerConnection gitUrl
    url siteUrl
    }
    }
    }
    }
    }
    task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
    }
    task javadoc(type: Javadoc) {
    options {
    encoding "UTF-8"
    charSet 'UTF-8'
    author true
    version true
    links "http://docs.oracle.com/javase/7/docs/api"
    }
    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.file('local.properties').newDataInputStream())
    bintray {
    // userOrg=properties.getProperty("bintray.user")
    user = properties.getProperty("bintray.user") //读取 local.properties 文件里面的 bintray.user
    key = properties.getProperty("bintray.apikey") //读取 local.properties 文件里面的 bintray.apikey
    configurations = ['archives']
    pkg {
    repo = "maven"
    name = "CommonUtil" //发布到JCenter上的项目名字,必须填写,对应com.squareup.okhttp3:okhttp:3.4.1中的okhttp
    publishVersion = ‘1.0.0’//发布到JCenter上的项目版本号
    websiteUrl = siteUrl
    vcsUrl = gitUrl
    licenses = ["Apache-2.0"]
    publish = true
    }
    }

    添加完成后,完整的build.gradle应该是这样的:


    这里写图片描述

    这里写图片描述

    这里写图片描述

    最后需要在本地的local.properties里面添加以下内容:
    bintray.user=YOUR_BINTRAY_USERNAME
    bintray.apikey=YOUR_BINTRAY_API_KEY
    如图所示:


    这里写图片描述

    第四步:
    打开android studio的命令行:


    这里写图片描述

    输入如下命令:
    输入命令:
    gradlew install
    gradlew bintrayUpload
    当这两个命令都成功显示BUILD SUCCESSFUL就可以了,或者不执行上面这两个命令,直接合成执行下面这个命令就可以了:
    gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
    记住要把user和key换成自己的,同样要显示BUILD SUCCESSFUL才可以。

    最后要将项目发布到jcenter:
    上传开源库到jcenter的办法很多,可以百度,这里看看我的就可以了,打开jcenter的主页,进入自己新建的maven仓库里面,你就可以看到自己推上来的开源项目了,如下图所示:


    这里写图片描述

    这里写图片描述

    然后需要等待审核通过,一般5-6小时。在审核通过前可以通过配置自己私有仓地址使用。


    这里写图片描述

    然后在项目的根目录下build.gradle配置地址:


    这里写图片描述

    然后在要是使用的Module的build.gradle里面添加依赖:
    项目中加入依赖即可:
    compile 'com.abrahamcaijin:ComonUtil:1.0.0'

    注意:如果这里提示依赖不成功,可以再后边加上@arr,审核通过以后可以去掉后面的@arr,暂时发现os系统上传后不需要加入便可成功,windows系统上传需要加入@arr
    compile 'com.abrahamcaijin:ComonUtil:1.0.0@aar'

    然后现在是1.0.0版本,我以后想增加、迭代怎么办?
    这个非常简单,当你的Library代码更改后,只需要更改一下上面的配置里面的publishVersion,运行gradlew clean build bintrayUpload -PdryRun=false,就可以更新版本号了。这样,整个过程就结束了。
    好了,现在你就可以在你项目中依赖你的开源库了,就是这么简单!有不懂的联系我。

    转载自:http://blog.csdn.net/u014727709/article/details/71104201
    欢迎start,欢迎评论,欢迎指正

  • 相关阅读:
    MSSQL大量数据时,建立索引或添加字段后保存更改超时该这么办
    POJ 3261 Milk Patterns (后缀数组)
    POJ 1743 Musical Theme (后缀数组)
    HDU 1496 Equations (HASH)
    694. Distinct Substrings (后缀数组)
    POJ 1222 EXTENDED LIGHTS OUT (枚举 或者 高斯消元)
    POJ 1681· Painter's Problem (位压缩 或 高斯消元)
    POJ 1054 The Troublesome Frog (hash散列)
    HDU 1716 排列2
    HDU 4405 Aeroplane chess (概率DP & 期望)
  • 原文地址:https://www.cnblogs.com/AbrahamCaiJin/p/7058147.html
Copyright © 2011-2022 走看看