http://blog.csdn.net/column/details/gradle-translation.html
翻译项目请关注Github上的地址:
https://github.com/msdx/gradledoc
本文翻译所在分支:
https://github.com/msdx/gradledoc/tree/1.12。
直接浏览双语版的文档请访问:
http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。
另外,Android 手机用户可通过我写的一个程序浏览文档,带缓存功能的,目前0.6开发中版本兼容 Android 2.3以上系统,项目地址如下:
https://github.com/msdx/gradle-doc-apk
翻译不易,转载请注明本文在CSDN博客上的出处:
http://blog.csdn.net/maosidiaoxian/article/details/71055332
关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。如发现翻译有误的地方,将首先在以上两个地方更新。因时间精力问题,博客中发表的译文基本不会同步修改。
另外,目前Gradle1.12版本的文档已经翻译完并进入校稿阶段,校稿的方式为到该项目https://github.com/msdx/gradledoc 提交issue或是pull request。校稿的结果不只是在此版本更新,也会用于改善Gradle下一版本(2.0)文档的翻译。
第六十三章. 构建比较
构建比较支持是一个还在孵化中的 功能。这也表示它是不完整的,并且还未成为定期的Gradle产品质量功能。这也意味着这一章的 Gradle 用户指南还在完善中。
Gradle 提供了对两个构建的 结果(例如生成的二进制档案)进行比较的支持。为什么你可能需要对两个构建的结果进行比较,有几个原因。你可能想要比较:
比当前所使用的Gradle版本更新的版本的构建(即升级Gradle版本)。
由Apache Ant,Apache Maven 或其他工具执行的Gradle构建(即迁移到Gradle)。
同样原Gradle构建,同样的版本,但是比较构建前后的变化(即测试构建产生的更改)。
通过比较这些场景的构建,你可以明智地决定是否要对Gradle升级,迁移到Gradle,或者是通过了解结果的差异来判断构建的更改。这个比较过程会生成一个HTML的报告,概述发现哪些结果是相同的,以及识别不完全相同的结果之间的差异。
以下是用于构建比较的术语以及对它们的定义。
- “构建”
-
在构建比较的场景中,一个构建不一定就是一个Gradle构建。它可以是任何可调用的产生可观察的“结果”的“过程”。至少有其中一个构建将是一个Gradle构建。
- “构建结果”
-
指在一个构建当中,在某种观察方法内发生的内容,比如一个zip文件的创建或者是测试的执行。这些都是可以用于比较的东西。
- “源构建”
-
正在进行比较的构建,通常是处于“当前”状态的构建。 换句话说,也就是构建比较的左手边。
- “目标构建”
-
与源构建进行比较的构建,通常是“建议”的构建。换句话说,也就是构建比较的右手边。
- “主机构建”
-
执行比较过程的构建。它可能是与“目标构建”或“源构建”相同的项目,也可能是一个完全独立的项目。它不需要与“源构建”或者是“目标构建”同样的Gradle版本。主机构建必须运行在Gradle1.12或以上。
- “比较构建结果”
-
构建结果原来的目的是成为在“源构建”和“目标构建”中的逻辑等价物,因此具有可比较性。
- “未比较的构建结果”
-
如果无法从其他构建中找到逻辑等价物(比如一个构建产生了一个zip文件,而其他的构建不会),那么构建结果就是未比较的。
- “未知的构建结果”
-
主机构建不能理解的构建结果。可能存在这样的情况不:一个源构建或目标构建使用一个比主机构建更新的版本,并且这个Gradle版本有新增加的结果类型。目前为止,未知的构建结果是可以被比较的,因为它们可以确定与其他构建的未知构建结果是否为逻辑等价物,但是对于实际上可以被执行的构建结果,这种比较则是没有意义的。对主机构建使用最新的Gradle版本可以避免遇到未知的构建结果。
由于它还是一个孵化中的功能,目前只是实现了最终功能的一部分。
目前只支持执行Gradle构建。源构建和目标构建必须使用Gradle1.0
或以上的版本来执行。主机构建必须至少是 1.2
版本。
未来的版本会提供对其他构建系统所执行的构建的支持,比如Apache Ant 或者是 Apache Maven,以及支持任意进程的执行(比如基于shell脚本的构建)。
compare-gradle-builds
可以用于方便地比较两个Gradle构建。该插件添加了一个叫“compareGradleBuilds
”的CompareGradleBuilds
任务到项目中。这个任务的配置指定了要比较哪些内容。默认情况下,它被配置为对当前构建与本身使用的当前的 Gradle 版本所执行的任务:“clean assemble
”进行比较。
apply plugin: 'compare-gradle-builds'
这个任务的配置可以修改比较的内容。
compareGradleBuilds { sourceBuild { projectDir "/projects/project-a" gradleVersion "1.1" } targetBuild { projectDir "/projects/project-b" gradleVersion "1.2" } }
上面的示例,配置了两个使用了不同的Gradle版本的项目之间的比较。
你可以使用这个构建比较功能来快速尝试在你的构建中使用新的Gradle版本。
想尝试对你当前的构建使用一个不同的Gradle版本,只需要对 根项目年的 build.gradle
添加以下的配置。
apply plugin: 'compare-gradle-builds' compareGradleBuilds { targetBuild.gradleVersion = "«gradle version»" }
然后只需要执行compareGradleBuilds 任务。当它们执行的时候,你就会看到控件台输出“源构建”和“目标构建”的结果。
如果在比较结果中有任何的差别,这个任务任务就会失败。然后会给出一个提供了对比较的深入了解的HTML报告文件的位置。如果所有的比较结果都是相同的,并且没有未比较的结果,以及没有未知的构建结构,那么任务会执行成功。
你也可以通过设置 ignoreFailures
属性为true,来配置构建结果不同时任务不失败。
compareGradleBuilds { ignoreFailures = true }
对于要用于比较的归档文件,它必须被添加为archives配置中的一个构件。关于如何配置及添加构件,可以查阅 第五十一章,发布构件 。