开发中常常需要用到一些开源库,Java 系(包括 Android)的许多开源库一般都部署在远程的 Meven 仓库中,用户只需要做简单的配置,就能依赖该库,避免了传统使用本地文件导入方式的低效繁琐。

我们依赖这些远程库的时候,一般需要三个字段,以 Android 中常用的 Gradle 配置为例,写法为:

implementation 'com.squareup.okhttp3:okhttp:4.9.3'

三个字段分别用冒号 : 分隔开,Gradle 这种写法的好处是能够减少了冗余配置,但也向我们隐藏了这三个字段所代表的实际意义。我们改为 Maven 的写法再看看:

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.3</version>
</dependency>

Maven 写法采用了 XML 语法,我们很容易得知这三个字段分别是 GroupIdArtifactIdVersion。其中 GroupId 对应的是项目组织标识,一般为 域名.项目名 的格式;ArtifactId 对应的是项目名称,它的作用可以区分这个项目下的一些子库或插件,比如 OkHttp 就包含了一个 ArtifactIdmockwebserver 的子库;Version 就很好理解了,就是版本号。

这么长的一段内容,你们平时是怎么记住的?我相信没人会去记这么一串东西。那么问题来了,那你们需要用到的时候是如何去找的?

我列举三个方法,看看是不是你们常用的。

第一,官网是最权威的,打开搜索引擎(Baidu / Google),输入库名称,点击搜索,在搜索结果中找到符合的选项,进入官网,翻阅到依赖相关的内容处,选中,复制,再到项目中去粘贴。

OkHttp 官网

第二,Github 是程序员的好朋友,打开 Github,输入库名称,搜索,在搜索结果中找到符合的选项,进入项目仓库中,滚动到 README,翻阅到依赖相关的内容处,选中,复制,再到项目中去粘贴。

Glide 项目主页

第三,直接利用 IDE 的工具搜索,选择对应的库和版本,一键导入:

Android Studio 内置搜索

我简单说下这三种方法的缺点。

第一种方法只适用于项目有官网的库,如果恰好这个项目没有官网,或者说没有被搜索引擎收录,使用这种方法就犹如无头苍蝇。

第二种方法的两个缺点我认为有三个,一是 Github 本身在国内的访问就不是特别稳定,二是有些库发布版本没有生成 Release 日志,这会导致我们有时候只想查询版本号时一定要去翻阅 README,三是有些库甚至为了懒得改 README 直接引入了版本图片徽标,在依赖示例处直接用占位符代替,而恰好图片徽标又依赖于其他网站,当其他网站不稳定时,这个图片徽标显示不出来,导致无法得知版本号。

第三种方法一键导入看似非常方便,但是这个搜索引擎真的太废了,当你想搜索一个库时,直接搜索 ArtifactId 是不行的,必须要输入 GroupId 它才能搜索到你想要的内容,而问题就在于我们平常无论是交流还是使用,都只会记住 ArtifactId,所以只能说这个功能略显鸡肋。

说了这么多,就该推荐一个我常用的工具了。

MVN Repository

MVN Repository』是一个 Maven 库的查询工具,你只需要输入库的名称,它就能够找到对应库的历史版本信息,并自动为你生成依赖配置。

举个例子,比如我想依赖 Android 中 Lifecycle 相关的库,做过 Android 开发的话你应该知道, Lifecycle 相关的依赖可不少,我希望可以根据自己的需要选择,那么打开『MVN Repository』进行搜索:

MVN Repository 搜索

可以看到,模糊搜索能力相比 IDE 内置的工具真是好太多了。

点进去我想要使用的库,会列出各个历史版本,除了正式的稳定版本之外,Alpha、Beta、RC 等版本都有收录。

MVN Repository 库版本信息

选择对应的版本进入详情页,这里罗列了如 License、主页、更新日期等详细信息,下面还直接提供了各构建工具下的配置语法,含括了 Maven、Gradle、SBT、Ivy、Grape、Leiningen、Buildr 等多种构建工具。

MVN Repository 库详情页

更贴心的是,你毋需再手动选中复制,只需点击该编辑框,内容会自动复制到剪切板,直接去 IDE 里面粘贴就行。

MVN Repository 自动复制

另外,对于不希望使用远程依赖的用户,页面上还提供了库的文件下载地址,该地址指向了其对应的 Maven 远程仓库,用户可以直接下载。

网站还提供了库的分类和排名功能,能够方便按需查找。

总的来说,『MVN Repository』功能不多,但都恰到好处,简单易用,可以称得上是提高开发效率的小工具,尤其是在项目搭建之初,它能够节省很多来回找库的时间。