美文网首页
Gradle相关点

Gradle相关点

作者: aicaprio | 来源:发表于2017-11-10 15:01 被阅读0次
    1. Wrapper

    资料1资料2资料3

    看完直接说结论:

    结论一:WrapperGralde间是解耦的

    Wrapper可以理解为一个Gradle的代理:代理Gradle的安装和调用。

    没有Wrapper你照样可以在系统上安装Gradle,但你需要自己去维护和管理Gradle升级等操作。当然这不是重点,重点是你需要维护整套Gradle的环境:比如配置环境变量等,装上并不代表就能用了。还有麻烦的地方,当你把Gradle加入到自己的项目工程中时,你同样要劳神费力的配置一翻。

    使用Wrapper后,你可以安心的托管了。比如以后升级,你无需自己去下载,而是直接修改下配置文件,交给Wrapper去打理就好了。Wrapper会维护自己的一套机制,你之前在安装的所有版本的GradleWrapper都会完全无视,即使你要的版本已经被你之前手动安装过了,一旦使用Wrapper后,还是会下载那个版本到它指定的目录中。

    之前说过,WrapperGralde的代理,执行Gradletask时:
    对于每一个/gradle <task>指令,都可以使用/gradlew <task>指令去替代。

    所以说了这么多,Wrapper到底是什么?
    Wrapper其实就是一定文件的集合。包含:一个核心JAR,1个配置文件和2个脚本文件。

    配置文件(gradle/wrapper/gradle-wrapper.properties):配置Gradle的下载、解压的路径,下载的地址等信息。

    JAR(gradle/wrapper/gradle-wrapper.jar):Wrapper自身的代码,Wrapper能做什么,发挥什么样的作用完全来自这个JAR

    脚本文件(gradlew.batgradlew,分别对应两种操作系统):用于执行Gradletask注意是调用Gradle的,不是Wrapper)。操作方式:/gradlew <task>
    如果:删除Windows下某个项目中的gradlew.bat文件,然后执行gradlew指令时,会提示:gradlew 不是内部或外部命令,也不是可运行的程序或批处理文件。 恢复后就正常了。

    什么是Gradle distributions
    这个词在开头的三篇文章中经常出现,它表示的很简单:就是Gradle自己的版本/们(注意,还是与Wrapper无关)。

    如果使用WrapperGralde distribution就会被下载到gradle/wrapper/gradle-wrapper.properties所配置的路径下,下载完毕后会自动解压。

    Gralde distributions下载地址

    wrapper.properties里的distributionUrl的值就是具体distribution的下载地址。wrapper/dists目录指的就是distribution的目录。

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
    

    distributionbinall两种版本,all等于bin+src
    all包含:

    bin
    docs
    init.d
    lib
    media
    samples
    src
    

    bin包含:

    bin
    init.d
    lib
    media
    

    lib下面是组成Gralde的各种JAR

    bin下面就2个文件gradlegradle.bat两个。是不是如Wrappergradlewgradlew.bat似曾相识?
    没错,这两个就是分别在两种系统下执行Gradle task的脚本文件~。

    结论二:Gradle / WrapperAndroid Studio间是解耦的

    经过上面的讲解,基本上可以推出这个结论了。
    AS在创建Android工程时会自动创建Wrapper,并且指定Android Plugin for Gradle插件进行支持。
    这样的话,我们连 Wrapper配置到项目工程中的 这个动作都可以省略了。很显然AS这么做是为了给广大开发者节省时间。
    当然,你也可以不这么做,正如官方文档所言:

    GradleAndroid Plugin for Gradle 插件独立于 Android Studio 运行。这意味着,您可以在 Android Studio 内、使用计算机上的命令行工具或在未安装 Android Studio 的计算机(例如持续性集成服务器)上构建 Android 应用。如果您不使用 Android Studio,可以学习如何从命令行构建和运行您的应用(资料3)。无论您是从命令行、在远程计算机上还是使用 Android Studio 构建项目,构建的输出都相同。

    最后,还有一个很小的或者无关紧要的点,在AS根目录下会有一个.gradle的文件夹,当执行任何gradlew/gradlew <task>指令时就会生成该文件夹(如果没有)。据说是Gradle(不是Wrapper)的编译系统,版本由Wrapper指定。

    .gradle文件夹是否似曾相识? 没错,wrapper.properties里的GRADLE_USER_HOME也就是Gralde distributionspath路径,默认就是以.gradle文件夹结尾的(见资料2)。
    但这跟上面所说的工程根目录下的.gradle文件夹没有一毛钱关系。

    2. 什么是DSL

    DSL(Domain Specified Language)领域专用语言:DSL说明

    3. Groovy

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库

    Groovy 是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

    Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代Java,而是指Groovy和Java很好的结合编程。

    相关文章

      网友评论

          本文标题:Gradle相关点

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