美文网首页
Gradle和Maven仓库介绍

Gradle和Maven仓库介绍

作者: Lee_5566 | 来源:发表于2021-01-13 19:14 被阅读0次
    image.png

    Gradle 介绍

    Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

    Gradle不单单是一个配置脚本,它的背后是几门语言,如果硬让我说,我认为是三门语言。

    • Groovy Language
    • Gradle DSL
    • Android DSL

    DSL的全称是Domain Specific Language,即领域特定语言,或者直接翻译成“特定领域的语言”,,其实就是这个语言不通用,只能用于特定的某个领域,俗称“小语言”。因此DSL也是语言。

    image.png

    Groovy和Java

    Groovy是一门jvm语言,它最终是要编译成class文件然后在jvm上执行,所以Java语言的特性Groovy都支持,我们完全可以混写Java和Groovy。

    Groovy提供了更加灵活简单的语法,大量的语法糖以及闭包特性可以让你用更少的代码来实现和Java同样的功能。

    类似解析xml文件,Groovy就非常方便,只需要几行代码就能搞定,而如果用Java则需要几十行代码。

    安装Gradle

    在Android Studio中新建项目成功后会下载Gradle,不翻墙也是可以下载,但是访问特别慢,建议翻墙下载。

    Gradle下载后路径:

    • Mac上默认 /Users/<用户名>/.gradle/wrapper/dists 目录
    • Win上默认 C:\Documents and Settings<用户名>.gradle\wrapper\dists 目录

    目录下有个 gradle-x.xx-all 的文件夹。

    如果下载实在太慢,但是又不想翻墙的话,可以自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下,不过还是建议让它直接下载的好。

    Maven 仓库

    image.png

    Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

    在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
    Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

    Maven 仓库有三种类型:

    • 本地(local)
    • 中央(central)
    • 远程(remote)

    本地仓库

    Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。

    运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

    中央仓库

    Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

    中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。

    中央仓库的关键概念:

    • 这个仓库由 Maven 社区管理。
    • 不需要配置。
    • 需要通过网络才能访问。

    要浏览中央仓库的内容,maven 社区提供了一个 URL:maven仓库 。使用这个仓库,开发人员可以搜索所有可以获取的代码库。

    远程仓库

    如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。

    为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

    Gradle加载库使用

    Gradle中有多个maven {}配置段,分为以下几种可选配置:

    配置 含义
    mavenLocal() 直接使用~/.m2/作为maven仓库的路径
    mavenCentral() 使用maven中央仓库http://central.maven.org/作为maven仓库的路径
    jcenter() 使用jcenter仓库http://jcenter.bintray.com/作为maven仓库路径,在国内通常比mavenCentral()快很多
    maven { url: '/path/to/custom/url' } 自定义的maven仓库路径
    根目录下的gradle文件

    在我们的工程的根目录下的gradle文件配置

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.0'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
             //默认加载所需类库都会去jcenter中加载  如果没有找对对应的类库则会去我们配置的Maven仓库中查找
            jcenter()
            maven{
                //配置Maven仓库的地址
                url "http://repo.springsource.org/libs-milestone-local"
            }
        }
    }
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    可以看见jcenter() 在app的目录下的build.gradle文件里.

    以及会看到 compile 'com.google.gson:gson:2.2.4'之类的写法

    com.google.gson:gson:2.2.4这个库其实在jcenter里边有 ,如果加载一个类库jcenter中没有,那么就会去URL配置的Maven仓库中查找。

    app目录下的gradle文件

    配置好上面的文件后 ,我们需要在 app目录下的build.gradle中去引用所需要的类库:

    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile 'com.android.support:appcompat-v7:23.4.0'
        compile 'com.android.support:support-v4:25.1.1'
        testCompile 'junit:junit:4.12'
        compile 'com.gopivotal.manager:common:1.2.1.RELEASE'
    }
    

    相关文章

      网友评论

          本文标题:Gradle和Maven仓库介绍

          本文链接:https://www.haomeiwen.com/subject/anikaktx.html