Android 进阶——比Nexus 更强大的本地maven仓库软件JFrog Artifactory 使用详解

文章大纲

  • 引言
  • 一、JFrog Artifactory 概述
  • 二、JFrog Artifactory Pro 破解
  • 三、创建Artifactory 仓库
    • 1、本地仓库Local
    • 2、远程仓库Remote
    • 3、虚拟仓库Virtual
  • 四、Android Studio使用Artifactory 仓库
    • 1、引入gradle 插件
    • 2、引入google、jcenter maven库

引言

前面开发 Gradle 插件系列文章介绍了本地maven仓库搭建软件Nexus的使用,今天介绍一个升级版的“Nexus”——JFrog Artifactory的使用。

一、JFrog Artifactory 概述

借助本地maven仓库,我们可以把项目重构为以下的架构

借助maven远程库我们可以轻易查询出各个第三方的开放库所需要依赖的库。
在这里插入图片描述

二、JFrog Artifactory Pro 破解

下载JFrog Artifactory 6.x Pro 的软件和破解包,解压之后以管理员启动cmd并切换到artifactory-injector-1.1 jar包对应的路径下执行
在这里插入图片描述
当注入构件完毕之后,会再次弹出选项列表,输入1 就可以生成License在这里插入图片描述
回到Artifactory的解压目录,执行artifactory.bat批处理脚本,然后在浏览器打开http://localhost:8081/链接,
在这里插入图片描述
Artifactory启动成功后,根据提示需要输入生成 License key即可,接下来Enjoy Artifactory吧。

每次通过浏览器打开Artifactory 时记得先启动批处理脚本,否则你会收到404的。

三、创建Artifactory 仓库

Artifactory提供了三种类型的仓库:本地仓库Local、远程仓库Remote和虚拟仓库Virtual。

1、本地仓库Local

本地仓库可以通过Deploy上传并保存一些本地的构件,包括jar包、aar、压缩包、文件等等一切本地的文件,适用于保存一些静态不会经常变化的构件。
在这里插入图片描述

2、远程仓库Remote

远程仓库Remote 允许通过映射关系来直接引用或者代理现有的远程仓库,比如说可以直接代理阿里云的Maven仓库等等。
在这里插入图片描述
阿里云Maven 仓库列表:

仓库名 简介 实际地址 使用(代理)地址
jcenter JFrog公司提供的仓库 http://jcenter.bintray.com https://maven.aliyun.com/repository/jcenter
mavenLocal 本台电脑上的仓库 {USER_HOME}/.m2/repository {USER_HOME}/.m2/repository(Windows) /home/{USER}/.m2/repository (Linux)
mavenCentral Sonatype公司提供的中央库 http://central.maven.org/maven2 https://maven.aliyun.com/repository/central https://maven.aliyun.com/nexus/content/repositories/central
google Google公司提供的仓库 https://maven.google.com https://maven.aliyun.com/repository/google https://maven.aliyun.com/nexus/content/repositories/google https://dl.google.com/dl/android/maven2
jitpack JitPack提供的仓库 https://jitpack.io https://jitpack.io
public jcenter和mavenCentral的聚合仓库 https://maven.aliyun.com/repository/public https://maven.aliyun.com/nexus/content/groups/public
gradle-plugin Gradle插件仓库 https://plugins.gradle.org/m2 https://maven.aliyun.com/repository/gradle-plugin https://maven.aliyun.com/nexus/content/repositories/gradle-plugin

3、虚拟仓库Virtual

Virtual 虚拟仓库既不能接收上传的构件也不能与现有的远程仓库建立具体的映射关系,主要用于把Artifactory 里的仓库进行分组,这样子需要引入多个仓库时不必把每一个的链接地址都贴出来,只需要把这些仓库关联到一个Virtual 里然后 引入这个Virtual库就可以了
在这里插入图片描述

四、Android Studio使用Artifactory 仓库

记得先启动Artifactory

1、引入gradle 插件

gradle/wrapper/gradle-wrapper.properties

1
2
3
4
5
6
7
#Tue Mar 24 11:10:36 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
//改成你自己的Artifactory Local仓库
distributionUrl=http\\://localhost:8081/artifactory/android-gradle/gradle-5.4.1-all.zip

2、引入google、jcenter maven库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
buildscript {
    repositories {
        maven{
            url 'http://localhost:8081/artifactory/list/android-basic-group/'
        }
        google()
        jcenter()
    }
}

allprojects {
    repositories {
        maven{
            url 'http://localhost:8081/artifactory/list/android-basic-group/'
        }
        google()
        jcenter()
    }
}
...

当Gradle 构建项目时候是按照顺序进行解析加载的,当可以从配置的maven库加载到需要的库时,就不会再到google、jcenter的maven库中去加载了。如果你觉得每一个项目都需要这样配置比较麻烦的话,那么可以新建一个名为init.gradle的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
buildscript {
    repositories {
         maven{
            url 'http://localhost:8081/artifactory/list/android-basic-group/'
        }
        google()
        jcenter()
    }
}
   
allprojects {
    repositories {
         maven{
            url 'http://localhost:8081/artifactory/list/android-basic-group/'
        }
        google()
        jcenter()
    }
}

并复制到到USER_HOME/.gradle/下即可,当Gradle构建项目时就会跑到android-basic-group映射的仓库中去下载库,最后依然是缓存到.gradle下对应的目录中。