Gradle实践指南:HelloWorld

2018-12-29 10:35:07 浏览数 (1)

这篇文章使用最简单的HelloWorld例子对Gradle的使用进行概要性的说明。

事前准备

事前安装和设定好gradle

代码语言:javascript复制
liumiaocn:hello liumiao$ gradle --version
------------------------------------------------------------
Gradle 4.10.2
------------------------------------------------------------

Build time:   2018-09-19 18:10:15 UTC
Revision:     b4d8d5d170bb4ba516e88d7fe5647e2323d791dd

Kotlin DSL:   1.0-rc-6
Kotlin:       1.2.61
Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_191 (Oracle Corporation 25.191-b12)
OS:           Mac OS X 10.14 x86_64

liumiaocn:hello liumiao$ 

第一个HelloWorld

  • 准备一个groovy文件,具体信息如下
代码语言:javascript复制
liumiaocn:hello liumiao$ ls
build.gradle
liumiaocn:hello liumiao$ cat build.gradle 
println "hello gradle"
liumiaocn:hello liumiao$
  • 执行gradle命令
代码语言:javascript复制
liumiaocn:hello liumiao$ gradle

> Configure project :
hello gradle

> Task :help

Welcome to Gradle 4.10.2.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

For troubleshooting, visit https://help.gradle.org

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
liumiaocn:hello liumiao$

这个例子看起来更像是groovy的hello world,接下来先对gradle的基本概念等信息进行展开后,对此例子再进行进一步地解释。

基础概念

Gradle有两个最基础的概念:

  • Task:在构建中Gradle执行和管理的原子粒度的最小单元,比如上例中的输出hello的语句,在实际的使用中比如编译或者执行单体测试等操作均可作为task。
  • Project:可以理解为Project就是存放Task的场所,Project可由一个或多个Task所组成。而构建也可以由多个Project所组成,这样就能实现对不同项目的适应。

两个gradle文件

在例子中使用了一个build.gradle文件,还有一个settings.gradle文件在最初使用时会经常见到:

  • build.gradle: 用于存放构建相关的Task,单个工程(Project)与build.gradle的关系是一对一的关系,如果是多个工程的情况下,类似与maven的module的方式,构建根目录下的build.gradle起到总纲的作用。
  • settings.gradle: 用于存放设定相关的信息,单工程时不是必须的,多工程是必须的,一般用于引入多个工程,在项目初期化的时候会根据此文件生成一个Settings实例用于执行。

Projects的确认

使用gradle projects可以查看工程下的详细信息

代码语言:javascript复制
liumiaocn:hello liumiao$ gradle projects

> Configure project :
hello gradle

> Task :projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'hello'
No sub-projects

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :tasks

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
liumiaocn:hello liumiao$ 

可以看到,Root project 'hello’的提示,以及没有子工程(No sub-projects)的提示。

Tasks的确认

通过gradle tasks可以查看task的详细信息

代码语言:javascript复制
liumiaocn:hello liumiao$ gradle tasks

> Configure project :
hello gradle

> Task :tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'hello'.
components - Displays the components produced by root project 'hello'. [incubating]
dependencies - Displays all dependencies declared in root project 'hello'.
dependencyInsight - Displays the insight into a specific dependency in root project 'hello'.
dependentComponents - Displays the dependent components of components in root project 'hello'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'hello'. [incubating]
projects - Displays the sub-projects of root project 'hello'.
properties - Displays the properties of root project 'hello'.
tasks - Displays the tasks runnable from root project 'hello'.

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
liumiaocn:hello liumiao$ 

改进的HelloWorld

上述的HelloWorld例子过于简单, 在settings.gradle中添加一句println来确认一下执行顺序,然后设定project的名称,而不是使用缺省被指定的hello

代码语言:javascript复制
liumiaocn:hello liumiao$ cat settings.gradle 
println "setting gradle ..."
rootProject.name='helloPorject'
liumiaocn:hello liumiao$

同样,对task也做一些简单的设定,详细后续在task的使用方式中展开

代码语言:javascript复制
liumiaocn:hello liumiao$ cat build.gradle 
task helloGradle {
  println "hello gradle"
}
project.task('helloTask',group:'helloGradle',description:'hello gradle task')
liumiaocn:hello liumiao$ 

确认project

代码语言:javascript复制
liumiaocn:hello liumiao$ gradle projects
setting gradle ...

> Configure project :
hello gradle

> Task :projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'helloPorject'
No sub-projects

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :tasks

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
liumiaocn:hello liumiao$

确认task

代码语言:javascript复制
liumiaocn:hello liumiao$ gradle tasks
setting gradle ...

> Configure project :
hello gradle

> Task :tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

HelloGradle tasks
-----------------
helloTask - hello gradle task

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'helloPorject'.
components - Displays the components produced by root project 'helloPorject'. [incubating]
dependencies - Displays all dependencies declared in root project 'helloPorject'.
dependencyInsight - Displays the insight into a specific dependency in root project 'helloPorject'.
dependentComponents - Displays the dependent components of components in root project 'helloPorject'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'helloPorject'. [incubating]
projects - Displays the sub-projects of root project 'helloPorject'.
properties - Displays the properties of root project 'helloPorject'.
tasks - Displays the tasks runnable from root project 'helloPorject'.

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
liumiaocn:hello liumiao$ 

执行task

task既然有名称了,就可以使用名称来执行了

代码语言:javascript复制
liumiaocn:hello liumiao$ gradle helloGradle
setting gradle ...

> Configure project :
hello gradle

BUILD SUCCESSFUL in 0s
liumiaocn:hello liumiao$ 

总结

Task和Project两个基本概念,settings.gradle和build.gradle两个缺省配置文件,这是需要首先掌握的。

作者:liumiaocn 原文:https://blog.csdn.net/liumiaocn/article/details/84192318


代码人生,一飞冲天。

END

0 人点赞