开发中常常需要用到一些开源库,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 语法,我们很容易得知这三个字段分别是 GroupId
、ArtifactId
和 Version
。其中 GroupId
对应的是项目组织标识,一般为 域名.项目名
的格式;ArtifactId
对应的是项目名称,它的作用可以区分这个项目下的一些子库或插件,比如 OkHttp
就包含了一个 ArtifactId
为 mockwebserver
的子库;Version
就很好理解了,就是版本号。
这么长的一段内容,你们平时是怎么记住的?我相信没人会去记这么一串东西。那么问题来了,那你们需要用到的时候是如何去找的?
我列举三个方法,看看是不是你们常用的。
第一,官网是最权威的,打开搜索引擎(Baidu / Google),输入库名称,点击搜索,在搜索结果中找到符合的选项,进入官网,翻阅到依赖相关的内容处,选中,复制,再到项目中去粘贴。
第二,Github 是程序员的好朋友,打开 Github,输入库名称,搜索,在搜索结果中找到符合的选项,进入项目仓库中,滚动到 README,翻阅到依赖相关的内容处,选中,复制,再到项目中去粘贴。
第三,直接利用 IDE 的工具搜索,选择对应的库和版本,一键导入:
我简单说下这三种方法的缺点。
第一种方法只适用于项目有官网的库,如果恰好这个项目没有官网,或者说没有被搜索引擎收录,使用这种方法就犹如无头苍蝇。
第二种方法的两个缺点我认为有三个,一是 Github 本身在国内的访问就不是特别稳定,二是有些库发布版本没有生成 Release 日志,这会导致我们有时候只想查询版本号时一定要去翻阅 README,三是有些库甚至为了懒得改 README 直接引入了版本图片徽标,在依赖示例处直接用占位符代替,而恰好图片徽标又依赖于其他网站,当其他网站不稳定时,这个图片徽标显示不出来,导致无法得知版本号。
第三种方法一键导入看似非常方便,但是这个搜索引擎真的太废了,当你想搜索一个库时,直接搜索 ArtifactId
是不行的,必须要输入 GroupId
它才能搜索到你想要的内容,而问题就在于我们平常无论是交流还是使用,都只会记住 ArtifactId
,所以只能说这个功能略显鸡肋。
说了这么多,就该推荐一个我常用的工具了。
『MVN Repository』是一个 Maven 库的查询工具,你只需要输入库的名称,它就能够找到对应库的历史版本信息,并自动为你生成依赖配置。
举个例子,比如我想依赖 Android 中 Lifecycle
相关的库,做过 Android 开发的话你应该知道, Lifecycle
相关的依赖可不少,我希望可以根据自己的需要选择,那么打开『MVN Repository』进行搜索:
可以看到,模糊搜索能力相比 IDE 内置的工具真是好太多了。
点进去我想要使用的库,会列出各个历史版本,除了正式的稳定版本之外,Alpha、Beta、RC 等版本都有收录。
选择对应的版本进入详情页,这里罗列了如 License、主页、更新日期等详细信息,下面还直接提供了各构建工具下的配置语法,含括了 Maven、Gradle、SBT、Ivy、Grape、Leiningen、Buildr 等多种构建工具。
更贴心的是,你毋需再手动选中复制,只需点击该编辑框,内容会自动复制到剪切板,直接去 IDE 里面粘贴就行。
另外,对于不希望使用远程依赖的用户,页面上还提供了库的文件下载地址,该地址指向了其对应的 Maven 远程仓库,用户可以直接下载。
网站还提供了库的分类和排名功能,能够方便按需查找。
总的来说,『MVN Repository』功能不多,但都恰到好处,简单易用,可以称得上是提高开发效率的小工具,尤其是在项目搭建之初,它能够节省很多来回找库的时间。