Gradle 1.12用户指南翻译——第六十三章. 构建比较

其他章节的翻译请参见:
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的报告,概述发现哪些结果是相同的,以及识别不完全相同的结果之间的差异。

63.1. 术语定义

以下是用于构建比较的术语以及对它们的定义。

“构建”

在构建比较的场景中,一个构建不一定就是一个Gradle构建。它可以是任何可调用的产生可观察的“结果”的“过程”。至少有其中一个构建将是一个Gradle构建。

“构建结果”

指在一个构建当中,在某种观察方法内发生的内容,比如一个zip文件的创建或者是测试的执行。这些都是可以用于比较的东西。

“源构建”

正在进行比较的构建,通常是处于“当前”状态的构建。 换句话说,也就是构建比较的左手边。

“目标构建”

与源构建进行比较的构建,通常是“建议”的构建。换句话说,也就是构建比较的右手边。

“主机构建”

执行比较过程的构建。它可能是与“目标构建”或“源构建”相同的项目,也可能是一个完全独立的项目。它不需要与“源构建”或者是“目标构建”同样的Gradle版本。主机构建必须运行在Gradle1.12或以上。

“比较构建结果”

构建结果原来的目的是成为在“源构建”和“目标构建”中的逻辑等价物,因此具有可比较性。

“未比较的构建结果”

如果无法从其他构建中找到逻辑等价物(比如一个构建产生了一个zip文件,而其他的构建不会),那么构建结果就是未比较的。

“未知的构建结果”

主机构建不能理解的构建结果。可能存在这样的情况不:一个源构建或目标构建使用一个比主机构建更新的版本,并且这个Gradle版本有新增加的结果类型。目前为止,未知的构建结果是可以被比较的,因为它们可以确定与其他构建的未知构建结果是否为逻辑等价物,但是对于实际上可以被执行的构建结果,这种比较则是没有意义的。对主机构建使用最新的Gradle版本可以避免遇到未知的构建结果。

63.2. 目前的能力

由于它还是一个孵化中的功能,目前只是实现了最终功能的一部分。

63.2.1. 支持的构建

目前只支持执行Gradle构建。源构建和目标构建必须使用Gradle1.0或以上的版本来执行。主机构建必须至少是 1.2版本。

未来的版本会提供对其他构建系统所执行的构建的支持,比如Apache Ant 或者是 Apache Maven,以及支持任意进程的执行(比如基于shell脚本的构建)。

63.2.2. 支持的构建结果

目前只支持构建结果是 zip 归档的比较。包括jar, warear 归档文件。

未来的版本会提供对类似于测试执行(例如哪些测试被执行了,哪些测试失败了,等等)的构建结果比较的支持。

63.3. 比较Gradle构建

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版本的项目之间的比较。

63.3.1. 尝试 Gradle 升级

你可以使用这个构建比较功能来快速尝试在你的构建中使用新的Gradle版本。

想尝试对你当前的构建使用一个不同的Gradle版本,只需要对 根项目年的 build.gradle 添加以下的配置。

apply plugin: 'compare-gradle-builds'

compareGradleBuilds {
    targetBuild.gradleVersion = "«gradle version»"
}

然后只需要执行compareGradleBuilds 任务。当它们执行的时候,你就会看到控件台输出“源构建”和“目标构建”的结果。

63.3.2. 比较“结果”

如果在比较结果中有任何的差别,这个任务任务就会失败。然后会给出一个提供了对比较的深入了解的HTML报告文件的位置。如果所有的比较结果都是相同的,并且没有未比较的结果,以及没有未知的构建结构,那么任务会执行成功。

你也可以通过设置 ignoreFailures 属性为true,来配置构建结果不同时任务不失败。

compareGradleBuilds {
    ignoreFailures = true
}

63.3.3. 哪些归档文件会进行比较?

对于要用于比较的归档文件,它必须被添加为archives配置中的一个构件。关于如何配置及添加构件,可以查阅 第五十一章,发布构件 。

同时,这个归档必须由 Zip, Jar, WarEar 任务产生。未来版本的Gradle对这一方面的支持将更灵活。


上一篇:如何执行一套数据推动的云迁移方法


下一篇:账户锁定策略