概述
本文将详细讲解2个maven仓库jcenter、mavenCenter的创建、注册、发布、上传及其怎样将jcenter中发布的文件自动上传到mavenCenter。
何为jcenter,mavenCenter?
jcenter。
jcenter是一个由 bintray.com维护的Maven仓库 。你可以在这里看到整个仓库的内容。
我们在项目的build.gradle 文件中如下定义仓库,就能使用jcenter了:
allprojects {
repositories {
jcenter()
}
Maven Central
Maven Central 则是由sonatype.org维护的Maven仓库。你可以在这里看到整个仓库。
注:不管是jcenter还是Maven Central ,两者都是Maven仓库
我们在项目的build.gradle 文件中如下定义仓库,就能使用Maven Central了:
allprojects {
repositories {
mavenCentral()
}
}
为什么会有2个maven标准库?为什么android studio早期自动引入的是mavenCenter库,之后却换成了jcenter这个标准库?
虽然jcenter和Maven Central 都是标准的 android library仓库,但是它们维护在完全不同的服务器上,由不同的人提供内容,两者之间毫无关系。在jcenter上有的可能 Maven Central 上没有,反之亦然。
事实上两个仓库都具有相同的使命:提供Java或者Android library服务。上传到哪个(或者都上传)取决于开发者。
起初,Android Studio 选择Maven Central作为默认仓库。如果你使用老版本的Android Studio创建一个新项目,mavenCentral()会自动的定义在build.gradle中。
但是Maven Central的最大问题是对开发者不够友好。上传library异常困难。上传上去的开发者都是某种程度的极客。同时还因为诸如安全方面的其他原因,Android Studio团队决定把默认的仓库替换成jcenter。正如你看到的,一旦使用最新版本的Android Studio创建一个项目,jcenter()自动被定义,而不是mavenCentral()。
有许多将Maven Central替换成jcenter的理由,下面是几个主要的原因。
jcenter通过CDN发送library,开发者可以享受到更快的下载体验。
jcenter是全世界最大的Java仓库,因此在Maven Central 上有的,在jcenter上也极有可能有。换句话说jcenter是Maven Central的超集。
上传library到仓库很简单,不需要像在 Maven Central上做很多复杂的事情。
友好的用户界面
如果你想把library上传到 Maven Central ,你可以在bintray网站上直接点击一个按钮就能实现。
仓库中存储的有两种类型的library:jar 和 aar。jar文件大家都知道,但是什么是aar文件呢?
aar文件
aar文件时在jar文件之上开发的。之所以有它是因为有些Android Library需要植入一些安卓特有的文件,比如AndroidManifest.xml,资源文件,Assets或者JNI。这些都不是jar文件的标准。
因此aar文件就时发明出来包含所有这些东西的。总的来说它和jar一样只是普通的zip文件,不过具有不同的文件结构。jar文件以classes.jar的名字被嵌入到aar文件中。其余的文件罗列如下:
- /AndroidManifest.xml (mandatory)
- /classes.jar (mandatory)
- /res/ (mandatory)
- /R.txt (mandatory)
- /assets/ (optional)
- /libs/*.jar (optional)
- /jni//*.so (optional)
- /proguard.txt (optional)
- /lint.jar (optional)
在了解以上关于maven库的基本概念之后,要进行maven库的各种操作还必须了解build.gradle这个脚本文件,而了解这个文件就不行了解groovy动态脚本语言及其task,project,plugin等各种概念。这些东西足够写上好几篇文章了,本文主要对maven库的各种操作进行讲解,因此以上概念请查看相关技术文章,有助于来理解本文后续内容。
怎样上传jar、aar等到jcenter?
1、首选需要创建注册一个bintray账户,注册网址:https://bintray.com。
注册bintray账户的时候请注意一个问题,bintray账户分为企业账户和个人账户,对于个人来说最好注册个人账户,因为个人账户在把上传的内容推送到远端的时候需要执行 Add to JCenter按钮,只有点击这个按钮才能把上传的包推向远程;而企业账户最开始注册是没有这个按钮的,因为企业账户需要审核,可能会长到一个月。
2、账户注册完毕之后,回到android studio的build.gradle,开始脚本编程了。
标准脚本格式,可以完全贴入build.gradle中,替换相关内容即可。
标准jcenter发布脚本:
//必须引入这2个插件
apply plugin : 'com.github.dcendents.android-maven'
apply plugin : 'com.jfrog.bintray'
// This is the library version used when deploying the artifact
group = PROJ_GROUP
version = PROJ_VERSION //PROJ_VERSION 替换成自己的的版本号
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
description PROJ_DESCRIPTION //替换成自己的工程描述
// Add your description here
name PROJ_POM_NAME //替换成自己的工程名称
url PROJ_WEBSITEURL //替换成自己的工程网络地址,例如github中发布的源码地址
// Set your license
licenses {
license {
name PROJ_LICENCE_NAME //替换证书类型,例如'The Apache Software License, Version 2.0'
url PROJ_LICENCE_URL //替换证书地址,例如'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution PROJ_LICENCE_DEST //证书描述
}
}
developers {
developer {
id DEVELOPER_ID //替换成自己的id
最后
以上就是粗暴红牛为你收集整理的jcenter,mavenCenter仓库创建、发布等完整流程详解的全部内容,希望文章能够帮你解决jcenter,mavenCenter仓库创建、发布等完整流程详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复