Android 相关知识

maven仓库简介

2018-08-07  本文已影响12人  dfqin

1. 什么是Maven

Maven是一个基于项目对象模型(POM)的项目管理工具。所有的Maven项目都会包含一个pom.xml的文件,里面通过一些字段标识坐标和依赖,即其他项目如何找到我和我都依赖什么项目,一个常见的pom.xml文件结构如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"
   <groupId>com.yiibai.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
   </dependency>
<project>

一个pom文件必须包含groupId、artifactId、version三个字段,这个三个字段就可以构成项目的坐标,常见节点含义如下:

节点 描述
groupId 项目组编号,通常以公司域名倒序,例如com.sina.mobile,通常这个组织是独一无二的
artifactId 项目编号,主要用来描述当前项目
version 当前项目的版本号
dependency 当前项目依赖的其他项目

我们在github上找到gson,它的文档里写了引用gson的方法如下,我们可以发现就是通过这三个节点来定位到gson库的。


2. Maven Central和jcenter

一个Maven项目构建后的输出或者所依赖的,我们可以称作构件或者库,集中存储这些构件的地方叫做Maven仓库。Maven仓库分为本地仓库和远程仓库,当Maven使用一个构建时,先在本地仓库中寻找,如果找不到,再去远程仓库寻找。

目前最常用的maven中央仓库为Maven Central和jcenter。
Maven Central是由sonatype.org维护的Maven仓库,它是很多机构默认的中央仓库,早期Android项目默认的仓库也是Maven Central。在android项目中指定Maven Central需要在根目录的build.gradle中加入如下代码:

repositories {
    mavenCentral()
}

可在后面两个地址浏览所有仓库构件: https://repo1.maven.org/maven2/https://oss.sonatype.org/content/repositories/releases/ ,也可在http://search.maven.org/ 直接搜索构件。

jcenter是由JFrog公司提供的中央仓库,现在是Android项目默认的仓库,我们新建一个Android项目时在build.gradle中能看到

repositories {
     jcenter()
}

在我写文章时这个网站(https://jcenter.bintray.com) 打开可以浏览构件,只有登录后才能搜索构件,跟我之前看到的有些不同。目前Android项目默认仓库是jcenter,目前普遍观点jcenter比maven central好一些,这些观点主要来自于JFrog官网和Android迁移到jcenter时的一个通告博客

当然我们也可以使用特定的Maven服务器,类似于:

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

还有一些公司的开源库放到自己的仓库维护,例如android的兼容库,在jcenter中是找不到的,但是在google的仓库中是可以找到,地址是https://maven.google.com/,可以gradle中配置google()即可。Facebook的RN库,从2.0以后的版本也没有放到公共仓库中了,通过node构建RN项目时,它会下载到node_module中的本地仓库

3. 如何发布自己的aar库到中央仓库

上面提到了两个中央仓库,我们可以把我们自己的构建发布到这两个仓库。jcenter是超集,所以只需要发布到maven central,构件会自动同步到jcenter上的。同样,我们发布到jcenter上面的库也可以同步到maven central,不过要手动去同步。
后面一篇文章我会介绍如何发布构件到中央仓库

上一篇下一篇

猜你喜欢

热点阅读