美文网首页
gradle三个级别和仓库管理

gradle三个级别和仓库管理

作者: 明静悟 | 来源:发表于2020-08-03 22:25 被阅读0次

    gradle三个级别和仓库管理

    gradle在android开发中是首选构建工具,Java开发中也是有日渐取代maven的趋势。对gradle的学习理解是必须的,今天以gradle在android开发中为例做一个介绍,要了解gradle的三个级别,以及国内如果无法使用仓库应该怎么办。了解了gradle的三个级别后,对后续gradle构建出现问题,你应该从那个方向着手处理会有很大帮助

    gradle.png

    gradle 项目总体分为3个级别。

    • gradle级别:最高级别,不针对项目类型和项目
    • gradle插件级别:针对不同的项目类型,比如:java和android
    • gradle module级别:具体项目,这个有开发者自己配置

    gradle 级别

    gradle级别,是gradle官方提供的总的构建工具。不针对具体的项目。gradle的版本和本地存储路径在gradle-wrapper.properties中指定

    #Fri Aug 02 15:04:58 CST 2019
    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
    
    gradle级别:是最高级,普通开发人员对其有基本的了解即可,比如:1.如何输出log;2.如何创建一个task等。

    gradle插件级别

    插件源的下载地址和版本指定
    buildscript {
        ext.kotlin_version = '1.3.41'
        repositories {
            //指定远程仓库
            google()
            jcenter()
            
        }
        dependencies {
        //指定对远程仓库的依赖项
            classpath 'com.android.tools.build:gradle:3.5.0'
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    

    这里要注意:

    • repositories :远程仓库名称,当然可以自定义
    • dependencies :对远程仓库的依赖项
    gradle 插件级别:这个级别面向的是不同的的项目,比如:java,android等。下面举个例子:
    • java 项目
    plugins {
       id 'java'
    }
    
    • android 项目
    apply plugin: 'com.android.application'
    

    gradle module级别

    module对远程仓库的指定
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    module指定依赖库
    dependencies {
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test:runner:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    }
    
    

    仓库管理

    无论是编译仓库buildscript还是编码依赖仓库allprojects都需要指定依赖项远程仓库源和项目版本号。知道这一点后,ok那么远程的仓库国内经常性的链接不上,或者链接上了速度很慢。那么该如何解决这个问题呢?

    • 使用国内镜像源,比如阿里的
    • 还有就是使用artifactory

    artifactory 是收费的,回头单独说。瞎说第一种情况:使用国内源,下面贴出groovy源码

    buildscript {
        //指定源
        repositories {
            maven {
                url 'https://maven.aliyun.com/repository/central'
            }
            maven {
                url 'https://maven.aliyun.com/repository/gradle-plugin'
            }
            maven {
                url 'https://maven.aliyun.com/repository/jcenter'
            }
            maven {
                url 'https://maven.aliyun.com/repository/google'
            }
            google()
            jcenter()
        }
        //指定依赖项
        dependencies {
            classpath 'com.android.tools.build:gradle:3.4.1'
        }
    }
    
    gradle_icon.png

    以上是gradle的三个级别,对其有了解后,当项目编译失败时可以​首先明确到时那个级别出的问题。这里说一些基本经验​

    • gralde 级别:通常不会出现异常
    • gradle plugin级别:最常见的问题就是依赖项同步问题,那么通过上面提到的仓库管理可以解决这个问题。
    • gradle module级别:这个也经常遇见,这个需要开发者对plugin中提供的函数要了解,比如你是做android开发的,那么这就就要求你对plugin andorid中提供的函数会使用,每一个函数参数的含义要了解清楚。

    欢迎关注,转发
    欢迎关注,转发
    欢迎关注,转发

    微信公众号.jpg

    相关文章

      网友评论

          本文标题:gradle三个级别和仓库管理

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