• Gradle 笔记


    此文为本人学习笔记,不保证正确性。。如有纰漏,还请指正。

    Maven 的配置太啰嗦了,因此想用 Gradle,可不仔细学学的话,用 Gradle 也只会复制粘贴。。
    于是注册了 Udacity 的 Gradle 课程: 用 Gradle 构建 Android 和 Java.

    Gradle 基础

    使用镜像加速

    首先需要了解一个基础的 Gradle 项目的构成。在任意一个文件夹中执行gradle init,都会生成下列文件:

    .
    ├── build.gradle  # 当前 Project 的构建脚本
    ├── gradle
    │   └── wrapper                 # Project 特定的 Gradle,这样不同项目可使用不同版本的 Gradle。
    │       ├── gradle-wrapper.jar         #    Gradle Wrapper executable JAR
    │       └── gradle-wrapper.properties  # Gradle Wrapper configuration properties
    ├── gradlew  
    ├── gradlew.bat  # 这两个 shell 脚本,分别是 Unix* 和 Windows 系统上的 Wrapper 执行脚本。
    └── settings.gradle  # 配置脚本,用于说明哪些项目参与构建
    

    一般构建,都推荐使用上面标明的 shell 脚本(gradlew 或 gradlew.bat)执行。该脚本使用的是项目独立的 gradle wrapper,可以保证不会因为 gradle 版本问题而构建失败。

    此外,如果有经常会变动的属性,或者是敏感信息,(比如安卓app签名密钥库的密码)可以单独保存到gradle.properties文件中,然后在 build.gradle 中使用该属性。(在开源项目中可能会用到)

    插件

    学了 Gradle基础部分 后,能理解 Gradle 提供了 Task 这样一个抽象层次,我们可以在这个层次上写我们的 Tasks 来构建任何东西。
    Gradle 用得最广泛的是在 Java 和 Android 项目上,可这样的项目一般都比较复杂,即使 Gradle 已经提供了很多基础功能,直接从零开始写 build.gradle 仍然会显得很困难。
    实际上,Java 项目或者 Android 项目,它们的构建任务,很大部分都是通用的。比如编译、打包、测试等等。因此 Gradle 官方提供了很多有用的插件,这些插件预置了很多通用的 Task 和 Task Types、DSL元素等。使用这些预定义的 Task,构建就显得简单多了。

    插件,可以把它类比成 Java 的父类,你的 build.gradle 便相当于插件的子类。

    Gradle 插件继承了 Maven 约定优于配置 的哲学,在默认情况下,执行各种任务时会默认你的项目使用标准结构。当然如有需要,你也可以自定义。

    Java 插件

    Java-library 插件

    用于构建 Java Library,一般都打包成 jar 发布。

    • The Java Library Plugin
      该插件基于 Java 插件,通过控制 api 的暴露与否,加快编译速度,隐藏不需要的 api。

    依赖管理

    测试

    打包到 jar

    可自定义manifest

    构建 web 应用

    Building Java Web Applications
    war 插件

    Multi-Project 的构建

    多 Project 的项目结构,是一个根 Project,其内包含多个子 Project。
    multi_project_builds

    • allprojects: 所有 Projects 的通用配置
    • subprojects: 和上面的 closure 的差别,在于它不包括根 Project.

    此外,经常会发现根 Project 的配置中,repositories closure 出现了两次。分别是在 allprojects 和 buildscript closure 里。
    buildscript 声明是gradle脚本自身需要使用的资源。内容包括仓库、依赖、第三方插件等。而上述 closure,设置的是 Project 需要用到的资源。

    Android 插件

    Android 项目是 Multi-Project 结构,因此写到这里。

  • 相关阅读:
    Nim or not Nim? hdu3032 SG值打表找规律
    Maximum 贪心
    The Super Powers
    LCM Cardinality 暴力
    Longge's problem poj2480 欧拉函数,gcd
    GCD hdu2588
    Perfect Pth Powers poj1730
    6656 Watching the Kangaroo
    yield 小用
    wpf DropDownButton 源码
  • 原文地址:https://www.cnblogs.com/kirito-c/p/9172905.html
Copyright © 2020-2023  润新知