zoukankan      html  css  js  c++  java
  • Gradle: Gradle Wrapper

    【Gradle 安装】

    安装完毕后,记得设置一下环境变量。
    Environment Variables:
    GRADLE_HOME=D:Program FilesGadlegradle-4.7
    Path=%GRADLE_HOME%in


    【Gradle Wrapper】
    gradlew的本质是 gradle 命令的一个wrapper,也就是在gradle的基础上添加了一些额外功能具体来说就是自动下载。

    wrapper执行流程:
    1)根据gradle-wrapper.properties 的配置检查是否需要安装gradle
    2)如果本地的gradle经过checksum验证通过,则不需要下载gradle,否则下载并安装gradle到某个目录
    3)安装完毕,开始执行 tasks

    gradle-wrapper.properties配置说明:

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    distributionUrl=https://services.gradle.org/distributions/gradle-4.7-bin.zip
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists

    默认配置如上,意思是说,从distributionUrl 下载gradle-4.7-bin.zip存放到 zipStoreBase + zipStorePath 目录下,然后安装到 distributionBase + distributionPath 目录下。

    distributionBase, zipStoreBase 都可以取两个值:GRADLE_USER_HOME 或者 PROJECT
    如果取值为PROJECT,则计算路径是 基于project目录来计算。
    如果取值为GRADLE_USER_HOME,则计算路径是基于 用户的 home目录来计算的。
    也就是说对于windows操作系统,默认基于 c:users<user_home>.gradle
    对于linux 系统,默认基于 $USER_HOME.gradle 来计算

    查看了gradle-wrapper.jar的源码,可以知道,当设置为GRADLE_USER_HOME时,会有一个搜索
    Gradle home的过程:

    1) -g 参数
    2)java系统属性: -Dgradle.user.home
    3) 环境变量:GRADLE_USER_HOME
    4)用户 home 目录 (默认值)

    private static File gradleUserHome(final ParsedCommandLine options) {
            if (options.hasOption("g")) {
                return new File(options.option("g").getValue());
            }
            return GradleUserHomeLookup.gradleUserHome();
        }
    
    public class GradleUserHomeLookup
    {
        public static final String DEFAULT_GRADLE_USER_HOME;
        public static final String GRADLE_USER_HOME_PROPERTY_KEY = "gradle.user.home";
        public static final String GRADLE_USER_HOME_ENV_KEY = "GRADLE_USER_HOME";
        
        public static File gradleUserHome() {
            String gradleUserHome;
            if ((gradleUserHome = System.getProperty("gradle.user.home")) != null) {
                return new File(gradleUserHome);
            }
            if ((gradleUserHome = System.getenv("GRADLE_USER_HOME")) != null) {
                return new File(gradleUserHome);
            }
            return new File(GradleUserHomeLookup.DEFAULT_GRADLE_USER_HOME);
        }
        
        static {
            DEFAULT_GRADLE_USER_HOME = System.getProperty("user.home") + "/.gradle";
        }
    }


    如果想要使用你已经安装的gradle,怎么办呢?
    这个在使用gradle-wrapper时是行不通的,除非你不使用gradle-wrapper来构建
    如何使用已经离线的下载的zip安装包呢?
    修改gradle-wrapper.properties中配置项为本地URL即可。

    例如我之前通过在线方式安装了gradle-4.7-bin.zip,
    我拿到该zip文件,copy一份放到D盘,修改名称为:gradle-4.7-bin-test.zip,
    然后修改gradle-wrapper.properties中配置项为:distributionUrl=file:///d:/gradle-4.7-bin-test.zip
    然后使用gradlew 执行一个task,就自动安装好了。

  • 相关阅读:
    Codeforces Gym 100015F Fighting for Triangles 状压DP
    Codeforces Gym 100015B Ball Painting 找规律
    Codeforces Gym 100015A Another Rock-Paper-Scissors Problem 找规律
    Codeforces Gym 100231G Voracious Steve 记忆化搜索
    Codeforces Gym 100231F Solitaire 折半搜索
    Codeforces Gym 100231L Intervals 数位DP
    Codeforces Gym 100231B Intervals 线段树+二分+贪心
    Codeforces Round #339 (Div. 1) A. Peter and Snow Blower 计算几何
    Codeforces Round #339 (Div. 2) B. Gena's Code 水题
    Codeforces Round #339 (Div. 2) A. Link/Cut Tree 水题
  • 原文地址:https://www.cnblogs.com/f1194361820/p/9121898.html
Copyright © 2011-2022 走看看