zoukankan      html  css  js  c++  java
  • 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 结构,因此写到这里。

  • 相关阅读:
    AC自动机
    【洛谷P1972】HH的项链
    【洛谷P4341】外星联络
    【洛谷P4576】棋盘游戏
    【JZOJ3800】败屩妖
    【JZOJ3798】临洮巨人
    【洛谷P3830】随机树
    【JZOJ3799】青蛙神
    牛客练习赛56 题解
    【洛谷P5300】与或和
  • 原文地址:https://www.cnblogs.com/kirito-c/p/9172905.html
Copyright © 2011-2022 走看看