android上传项目到码云_Android-项目Library发布到Maven,implementation/compile引用

小萌新正在搞通用弹窗的项目,(初步计划是1.自定义布局+点击事件回调 1.1 完善不同位置的显示效果,以及显示空间的不够的处理 1.2 然后增加属性配置 2. 后续就开始就该基础弹窗模仿主流应用的各种弹窗).所以就想着把Library发布到maven仓库,然后远程方便使用!就是酱紫。

从昨天(2019.02.12 10:00:00 )开始搞,差不多持续到现在(2019.02.13 11:24:00 )基本完事了,已经发布,并且(审核通过前-项目等差不多了再提交到jcenter)配置私有仓库的情况下使用成功!啊哈哈。。。

其实小萌新平时只是知道怎么自动配置人家开源的,具体详细的原理并不清楚!另外小萌新对maven, jcenter, bintray是啥关系都不知道,哎呀呀!

1. maven, jcenter, bintray关系走一走 Maven Central & JCenter & Bintray

2. 创建一个Library,不多说了哈 - 记得你的module的名称哈,后面配置上传需要注意

6a8fd3088fa6b911bf7759f6bd63a53e.png

e240adb628a7ce4f939f249d324c3e35.png

8b44223e9becb9a3304fa7bc243874ea.png

3. 提供一个参考,我觉得照着做做,踩踩坑基本就没问题

小萌新采用的方式 【Android】5分钟发布Android Library项目到JCenter,其中我是使用本地bintrayUpload.gradle文件

还有其他的可以参考哟 Android 上传自己的开源库到Bintray(超简单哦),别的参考链接就不发了,我感觉有点麻烦。相关资料可以自行搜索嘛。自己整一遍,会清晰很多,也会对整个流程更为熟知...

采坑的笔记也可以看看 关于将android项目发布到jcenter的最新最全说明 - lxd_Android的博客 - CSDN博客(文章末尾有坑说明)

其他采坑

No service of type Factory available in ProjectScopeServices.

4. 小萌新毕竟喜欢本地配置的方式,贴出

local.properties - 包含了apikey,不要传到github上

#bintray
bintray.user=resetmyself
bintray.apikey=xxxxxxxx

#developer
developer.id=FanChael
developer.name=HuangLei
developer.email=xxxx@gmail.com

- bintray.apikey=xxxxxxxx自己去自己的Download Center Automation & Distribution w. Private Repositories上面看

479a5fb926741df428bf86eec9173572.png

-bintray.user=resetmyself 是用户名,不是邮箱哈

7aeb986029638583a4c9440e2d5c27d2.png

project.properties

#project
#publish {
#repoName = 'holdon'         //bintray仓库名
#userOrg = 'resetmyself'     //bintray注册的用户名
#groupId = 'com.hl'          //compile引用时的第1部分groupId
#artifactId = 'poplibrary'   //compile引用时的第2部分项目名 - artifactId要和module的名字一致
#publishVersion = '1.0.0'    //compile引用时的第3部分版本号
#desc = 'This is a common popuwindow library for Android'
#website = 'https://github.com/FanChael/CommonPopupWindow'
#}
project.name=commonpop
project.reponame=holdon
project.groupId=com.hl
#artifactId要和module的名字一致 #project.artifactId:项目ID,通常情况下如果你的包名为com.example.test,那么项目ID就是test
project.artifactId=poplibrary
project.packaging=aar
project.version=1.0.0
project.siteUrl=https://github.com/FanChael/CommonPopupWindow
project.gitUrl=https://github.com/FanChael/CommonPopupWindow.git

#javadoc - 一般与工程名称(project.name)统一
javadoc.name=commonpop 

我的仓库如下

aaa4ec8abb2c61d83b244c9b8926ffb8.png

库名称:

8ebea87a423d535fb2f76e73f31a25e1.png

8ba37c04efdb41e05c71004005ad974d.png

bintrayUpload.gradle - 这就是负责上传库的脚本,比较喜欢独立开来,这样挺好。

apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

// load properties
Properties properties = new Properties()
File localPropertiesFile = project.file("local.properties");
if(localPropertiesFile.exists()){
    properties.load(localPropertiesFile.newDataInputStream())
}
File projectPropertiesFile = project.file("project.properties");
if(projectPropertiesFile.exists()){
    properties.load(projectPropertiesFile.newDataInputStream())
}

// read properties
def projectName = properties.getProperty("project.name")
def repoName = properties.getProperty("project.reponame")
def projectGroupId = properties.getProperty("project.groupId")
def projectArtifactId = properties.getProperty("project.artifactId")
def projectVersionName = properties.getProperty("project.version")
def projectPackaging = properties.getProperty("project.packaging")
def projectSiteUrl = properties.getProperty("project.siteUrl")
def projectGitUrl = properties.getProperty("project.gitUrl")

def developerId = properties.getProperty("developer.id")
def developerName = properties.getProperty("developer.name")
def developerEmail = properties.getProperty("developer.email")

def bintrayUser = properties.getProperty("bintray.user")
def bintrayApikey = properties.getProperty("bintray.apikey")

def javadocName = properties.getProperty("javadoc.name")

group = projectGroupId

// This generates POM.xml with proper parameters
install {
    repositories.mavenInstaller {
        pom {
            project {
                name projectName
                groupId projectGroupId
                artifactId projectArtifactId
                version projectVersionName
                packaging projectPackaging
                url projectSiteUrl
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id developerId
                        name developerName
                        email developerEmail
                    }
                }
                scm {
                    connection projectGitUrl
                    developerConnection projectGitUrl
                    url projectSiteUrl
                }
            }
        }
    }
}

// This generates sources.jar
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))
}

// Add compile dependencies to javadoc
afterEvaluate {
    javadoc.classpath += files(android.libraryVariants.collect { variant ->
        variant.javaCompile.classpath.files
    })
}

// This generates javadoc.jar
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

// javadoc configuration
javadoc {
    options{
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version projectVersionName
        links "http://docs.oracle.com/javase/7/docs/api"
        title javadocName
    }
}

// bintray configuration
bintray {
    user = bintrayUser
    key = bintrayApikey
    configurations = ['archives']
    pkg {
        repo = repoName
        name = projectName
        websiteUrl = projectSiteUrl
        vcsUrl = projectGitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

d341a5544ac411a6e952d6d8d0c429b5.png

5 . 最后基本上执行如下两个命令就ok了..(前提Download Center Automation & Distribution w. Private Repositories上面有你对应的仓库哟)

5bad1a46de369114d549b0eee0b74641.png

成功后

da932269560693a9ad51bb6525cf7fb1.png

网站就可以看到

04f30e84c56a77bee0d3837c63263b96.png

如果暂时未审核通过,可以maven自己的私有地址,也可以引用

f255b5d76f44b5ffad58f5ffb9cc63c0.png

f45fbbad29f53f92717e2013999ea696.png

差不都也就没啥了。基本上就可以了。。。 感兴趣的自己可以抽点时间试试。 小萌新还是对整个不熟,另外什么gradle/gradlew啥的也不熟...

继续弹窗实践....加油。(我发现弹窗知识还蛮多的了。后面总结就知道了。。。)

这有一篇感觉比较完整,也针对一些知识做了简单说明 Android Library的依赖方式及发布

其他还不错的(包含采坑)放弃JitPack,发布Android Library到Bintray、JCenter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值