Gradle教程第一章:1.1Gradle命令行使用
Posted 安卓开发资源分享
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle教程第一章:1.1Gradle命令行使用相关的知识,希望对你有一定的参考价值。
目录
1.1 执行多个任务
1.2 排除任务
1.3 在发生故障时继续构建
1.1 任务名称缩写
1.5 选择要执行的构建
1.6 强制执行任务
1.7 获取有关您的构建的信息
1.8 Dry Run
1.9 总结
本章介绍了Gradle命令行的基本内容。您使用gradle命令运行一个构建,您已经在前面的章节中看到过。
1。执行多个任务
通过在命令行上列出每个任务,可以在单个构建中执行多个任务。例如,命令gradle 编译测试将执行编译和测试任务。Gradle将按照在命令行上列出的顺序执行任务,并将执行每个任务的依赖项。每个任务只执行一次,不管它如何被包含在构建中:不论它是在命令行上指定的,还是作为另一个任务的依赖项,或者两者兼而有之。让我们来看一个例子。
窗体顶端
定义了以下四个任务。dist和test都依赖于编译任务。在这个构建脚本中运行gradle dist test,结果只执行一次编译任务。
。
图1.1 任务依赖关系
例1.1 执行多个任务
build.gradle
task compile {
doLast {
println 'compiling source'
}
}
task compileTest(dependsOn: compile) {
doLast {
println 'compiling unit tests'
}
}
task test(dependsOn: [compile, compileTest]) {
doLast {
println 'running unit tests'
}
}
task dist(dependsOn: [compile, test]) {
doLast {
println 'building the distribution'
}
}
的输出 gradle dist test
> gradle dist test
:compile
compiling source
:compileTest
compiling unit tests
:test
running unit tests
:dist
building the distribution
BUILD SUCCESSFUL in 0s
1 actionable tasks: 1 executed
由于每个任务仅会被调用一次,所以调用gradle test test与调用gradle test效果是相同的.
1.2排除任务
你可以使用- x命令行选项来排除一个任务,并提供排除任务的名称。让我们尝试一下上面的示例构建文件。例1.2排除任务
gradle dist -x test的输出
> gradle dist -x test
:compile
compiling source
:dist
building the distribution
BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed
从这个示例的输出,可以看到的 test任务没有执行,即使这是一个依赖的 dist的任务。你也会注意到 test任务的依赖任务,例如 compileTest也没有被执行。而像compile被test和其它任务同时依赖的任务仍然会被调用.
1.3发生故障时继续构建
默认情况下只要有任务调用失败Gradle就是中断执行.这可能会使调用过程更快,这允许构建完整的早,但隐藏其他故障发生。但隐藏了可能发生的其他故障。为了在一个构建执行中发现尽可能多的失败,你可以使用—continue选项。
采用了--continue选项,Gralde会调用每一个任务以及它们依赖的任务. 而不是一旦出现错误就会中断执行.所有错误信息都会在最后被列出来. 一旦某个任务执行失败,那么所有依赖于该任务的子任务都不会被调用.例如由于test任务依赖于complie任务,所以如果compile调用出错,test便不会被直接或间接调用.
1.4任务名称简化
当你在命令行上指定任务时,你不必提供任务的全称。你只需要提供足够的任务名称来唯一地标识任务。例如,在上面的示例构建中,你可以通过运行gradle d来执行任务
例1.3。简化任务名称
gradle di的输出 结果
> gradle di
:compile
compiling source
:compileTest
compiling unit tests
:test
running unit tests
:dist
building the distribution
BUILD SUCCESSFUL in 0s
1 actionable tasks: 1 executed
你还可以将每个单词缩写成camel case任务名称。例如,你可以通过运行gradle compTest甚至是gradle cT来执行task compileTest例1.1简化的驼峰任务名称
gradle cT的输出结果
> gradle cT
:compile
compiling source
:compileTest
compiling unit tests
BUILD SUCCESSFUL in 0s
2 actionable tasks: 2 executed
你还可以使用这些缩写 -x命令行选项。
1.5选择执行哪些构建
调用gradle时,默认情况下总是会构建当前目录下的文件, 可以使用-b参数选择构建的文件,并且当你使用此参数时settings.gradle将不会生效,看下面的例子:择 settings.gradle文件是不习惯。例子:
例1.5 使用构建文件选择项目
subdir/myproject.gradle
task hello {
doLast {
println "using build file '$buildFile.name' in '$buildFile.parentFile.name'."
}
}
的输出 gradle -q -b subdir/myproject.gradle hello
> gradle -q -b subdir/myproject.gradle hello
using build file 'myproject.gradle' in 'subdir'.
或者,你可以使用 –p参数来指定要使用的项目目录。对多项目构建你应该使用 –p参数而不是 –b参数。
例1.6 选择构建目录
gradle -q -p subdir hello的输出结果
> gradle -q -p subdir hello
using build file 'build.gradle' in 'subdir'.
1.6强制执行任务
许多任务,特别是由Gradle提供的任务,支持增量构建。这样的任务可以决定他们是否需要运行,或者基于他们的输入或输出自上次运行以来已经发生了变化。你可以很容易地识别出在构建运行过程中,当Gradle在其名称旁边显示最新的文本时,参与增量构建的任务。有时,你可能想要迫使Gradle运行所有的任务,而忽略任何最新的检查。如果是这样,只需使用—重新运行任务选项。这是在运行任务时执行任务时的输出:
迫使任务运行。例:
gradle doIt的输出结果
> gradle doIt
:doIt UP-TO-DATE
gradle --rerun-tasks doIt的输出结果
> gradle --rerun-tasks doIt
:doIt
注意,这将强制执行所有需要执行的任务,而不仅仅是你在命令行上指定的任务。这有点像运行干净,但是没有构建生成的输出被删除。
1.7获取信息关于你的构建
Gradle提供了几个内置的任务,这些任务显示了你的构建的特定细节。这有助于理解构建的结构和依赖关系,以及调试问题。
除了如下所示的内置任务之外,你还可以使用项目报告插件将任务添加到项目中,从而生成这些报告。
1.7.1 清单项目
运行gradle项目为你提供所选项目的子项目列表,显示在层次结构中。这是一个例子:
例1.8 获取项目信息
gradle -q projects的输出结果
> gradle -q projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation
To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks
报告显示了每个项目的描述,如果指定的话。你可以通过设置描述属性为项目提供描述:
例1.9为项目提供描述
build.gradle
description = 'The shared API for the application'
1.7.2.任务清单
运行gradle任务给你列出所选项目的主要任务的列表。该报告显示了项目的默认任务,如果有的话,以及对每个任务的描述。下面是这个报告的一个例子:
例1.10.获取信息的任务
gradle -q tasks的输出结果
> gradle -q tasks
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Default tasks: dists
Build tasks
-----------
clean - Deletes the build directory (build)
dists - Builds the distribution
libs - Builds the JAR
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 'projectReports'.
components - Displays the components produced by root project 'projectReports'. [incubating]
dependencies - Displays all dependencies declared in root project 'projectReports'.
dependencyInsight - Displays the insight into a specific dependency in root project 'projectReports'.
dependentComponents - Displays the dependent components of components in root project 'projectReports'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'projectReports'. [incubating]
projects - Displays the sub-projects of root project 'projectReports'.
properties - Displays the properties of root project 'projectReports'.
tasks - Displays the tasks runnable from root project 'projectReports' (some of the displayed tasks may belong to subprojects).
To see all tasks and more detail, run gradle tasks --all
To see more detail about a task, run gradle help --task <task>
默认情况下,此报告只显示分配给任务组的任务,即所谓的可见任务。你可以通过设置任务的组属性来完成此任务。你还可以设置description属性,以提供在报告中包含的描述。一个描述包含在报告中。
例1.11。改变任务报告的内容
build.gradle
dists {
description = 'Builds the distribution'
group = 'build'
}
你可以使用- all选项在任务列表中获得更多信息。使用此选项,任务报告列出项目中的所有任务,包括未分配给任务组的任务,即所谓的隐藏任务。这是一个例子:
例1.12.获取更多信息的任务
gradle -q tasks --all的输出
> gradle -q tasks --all
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Default tasks: dists
Build tasks
-----------
clean - Deletes the build directory (build)
api:clean - Deletes the build directory (build)
webapp:clean - Deletes the build directory (build)
dists - Builds the distribution
api:libs - Builds the JAR
webapp:libs - Builds the JAR
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 'projectReports'.
api:buildEnvironment - Displays all buildscript dependencies declared in project ':api'.
webapp:buildEnvironment - Displays all buildscript dependencies declared in project ':webapp'.
components - Displays the components produced by root project 'projectReports'. [incubating]
api:components - Displays the components produced by project ':api'. [incubating]
webapp:components - Displays the components produced by project ':webapp'. [incubating]
dependencies - Displays all dependencies declared in root project 'projectReports'.
api:dependencies - Displays all dependencies declared in project ':api'.
webapp:dependencies - Displays all dependencies declared in project ':webapp'.
dependencyInsight - Displays the insight into a specific dependency in root project 'projectReports'.
api:dependencyInsight - Displays the insight into a specific dependency in project ':api'.
webapp:dependencyInsight - Displays the insight into a specific dependency in project ':webapp'.
dependentComponents - Displays the dependent components of components in root project 'projectReports'. [incubating]
api:dependentComponents - Displays the dependent components of components in project ':api'. [incubating]
webapp:dependentComponents - Displays the dependent components of components in project ':webapp'. [incubating]
help - Displays a help message.
api:help - Displays a help message.
webapp:help - Displays a help message.
model - Displays the configuration model of root project 'projectReports'. [incubating]
api:model - Displays the configuration model of project ':api'. [incubating]
webapp:model - Displays the configuration model of project ':webapp'. [incubating]
projects - Displays the sub-projects of root project 'projectReports'.
api:projects - Displays the sub-projects of project ':api'.
webapp:projects - Displays the sub-projects of project ':webapp'.
properties - Displays the properties of root project 'projectReports'.
api:properties - Displays the properties of project ':api'.
webapp:properties - Displays the properties of project ':webapp'.
tasks - Displays the tasks runnable from root project 'projectReports' (some of the displayed tasks may belong to subprojects).
api:tasks - Displays the tasks runnable from project ':api'.
webapp:tasks - Displays the tasks runnable from project ':webapp'.
Other tasks
-----------
api:compile - Compiles the source files
webapp:compile - Compiles the source files
docs - Builds the documentation
1.7.3.获取关于任务的更多信息
运行gradle帮助——任务someTask为你提供与多项目构建中给定任务名称相匹配的特定任务或多个任务的详细信息。以下是详细信息的一个例子:
例1.13。获取任务的详细帮助
gradle -q help --task libs的输出结果
> gradle -q help --task libs
Detailed task information for libs
Paths
:api:libs
:webapp:libs
Type
Task (org.gradle.api.Task)
Description
Builds the JAR
Group
build
这些信息包括完整的任务路径、任务类型、可能的命令行选项和给定任务的描述。
1.7.4.清单项目依赖项
这些信息包括完整的任务路径、任务类型、可能的命令行选项和给定任务的描述。
例1.11.获取信息的依赖性
gradle -q dependencies api:dependencies的输出结果
webapp:dependencies
> gradle -q dependencies api:dependencies webapp:dependencies
------------------------------------------------------------
Root project
------------------------------------------------------------
No configurations
------------------------------------------------------------
Project :api - The shared API for the application
------------------------------------------------------------
compile
\--- org.codehaus.groovy:groovy-all:2.1.10
testCompile
\--- junit:junit:1.12
\--- org.hamcrest:hamcrest-core:1.3
------------------------------------------------------------
Project :webapp - The Web application implementation
------------------------------------------------------------
compile
+--- project :api
| \--- org.codehaus.groovy:groovy-all:2.1.10
\--- commons-io:commons-io:1.2
testCompile
No dependencies
由于依赖报告可以得到很大的支持,因此将报告限制在特定的配置中是很有用的。这是通过可选配置参数实现的:
例1.15.通过配置过滤依赖项报告
gradle -q api:dependencies --configuration testCompile的输出结果
> gradle -q api:dependencies --configuration testCompile
------------------------------------------------------------
Project :api - The shared API for the application
------------------------------------------------------------
testCompile
\--- junit:junit:1.12
\--- org.hamcrest:hamcrest-core:1.3
1.7.5.清单项目buildscript依赖关系
运行 gradle buildEnvironment看到buildscript依赖性的选择项目,以类似的方式 gradle dependencies看到软件的依赖关系。
1.7.6.了解一个特定的依赖
运行gradle buildEnvironment可视化了所选项目的构建脚本依赖关系,类似于层次依赖关系是如何可视化构建软件的依赖关系的。
例1.16.了解特定的依赖关系
gradle -q webapp:dependencyInsight --dependency groovy的输出结果
--configuration compile
> gradle -q webapp:dependencyInsight --dependency groovy --configuration compile
org.codehaus.groovy:groovy-all:2.1.10
\--- project :api
\--- compile
这个任务对于研究依赖项解析、找出某些依赖项来自哪里以及为什么选择某些版本非常有用。有关更多信息,请参见DependencyInsightReportTask类的API文档。
内置的依赖项insight任务是“帮助”任务组的一部分。任务需要配置依赖项和配置。报告寻找匹配指定配置中指定的依赖项规范的依赖项。如果应用了Java相关的插件,依赖项insight任务将预先配置为“compile”配置,因为通常它是我们感兴趣的编译依赖项。你应该通过命令行“依赖项”选项指定你感兴趣的依赖项。如果你不喜欢默认设置,你可以通过“—配置”选项选择配置。更多信息参见DependencyInsightReportTask类的API文档。
1.7.7.清单项目属性
运行gradle属性会为你提供所选项目的属性列表。这是输出中的一个片段:
例1.17.属性信息
gradle -q api:properties的输出结果
> gradle -q api:properties
------------------------------------------------------------
Project :api - The shared API for the application
------------------------------------------------------------
allprojects: [project ':api']
ant: org.gradle.api.internal.project.DefaultAntBuilder@12315
antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@12315
artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@12315
asDynamicObject: DynamicObject for project ':api'
baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@12315
buildDir: /home/user/gradle/samples/userguide/tutorial/projectReports/api/build
buildFile: /home/user/gradle/samples/userguide/tutorial/projectReports/api/build.gradle
1.7.8.分析构建
profile命令行选项将在构建运行时记录一些有用的时序信息,并将报告写入到构建/报告/概要目录。该报告将使用构建运行时的时间命名。
本报告列出了配置阶段和任务执行的摘要时间和细节。配置和任务执行的时间是先处理最昂贵的操作。任务执行结果还表明,如果跳过了任何任务(以及原因),或者没有跳过的任务没有工作。
构建利用buildSrc目录将生成一个第二buildSrc概要报告 buildSrc/build目录中。
1.8 Dry Run
有时,你感兴趣的是在命令行中指定给定任务集合的顺序执行哪些任务,但你不希望执行任务。你可以使用- m选项来实现。例如,如果你运行“gradle - m clean compile”,你将看到作为干净和编译任务的一部分执行的所有任务。这是任务任务的补充,它向你展示了可以执行的任务。
1.9 总结
在本章中,你已经看到了一些你可以从命令行中获得执行的东西。
以上是关于Gradle教程第一章:1.1Gradle命令行使用的主要内容,如果未能解决你的问题,请参考以下文章