首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gradle实践指南:HelloWorld

Gradle实践指南:HelloWorld

作者头像
我就是马云飞
发布2018-12-29 10:35:07
6590
发布2018-12-29 10:35:07
举报

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

事前准备

事前安装和设定好gradle

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文件,具体信息如下
liumiaocn:hello liumiao$ ls
build.gradle
liumiaocn:hello liumiao$ cat build.gradle 
println "hello gradle"
liumiaocn:hello liumiao$
  • 执行gradle命令
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可以查看工程下的详细信息

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的详细信息

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

liumiaocn:hello liumiao$ cat settings.gradle 
println "setting gradle ..."
rootProject.name='helloPorject'
liumiaocn:hello liumiao$

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

liumiaocn:hello liumiao$ cat build.gradle 
task helloGradle {
  println "hello gradle"
}
project.task('helloTask',group:'helloGradle',description:'hello gradle task')
liumiaocn:hello liumiao$ 

确认project

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

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既然有名称了,就可以使用名称来执行了

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农职场 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事前准备
  • 第一个HelloWorld
  • 基础概念
  • 两个gradle文件
  • Projects的确认
  • Tasks的确认
  • 改进的HelloWorld
  • 确认project
  • 确认task
  • 执行task
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档