Gradle 1.12用户指南翻译——第五十九章. 组织构建逻辑

  • 时间:
  • 浏览:1
  • 来源:大发幸运飞艇APP下载_大发幸运飞艇APP官方

http://blog.csdn.net/column/details/gradle-translation.html

build.gradle

让他使用GradleBuild 任务。让他通过使用 dir 或 buildFile 属性来指定执行哪一1个 构建,以及使用 tasks 属性来指定执行哪一1个 任务。

示例 59.8. Ant 的可选依赖

buildSrc/build.gradle

本文翻译所在分支:

任何定义在一1个 项目的构建脚本中的属性和妙招,对于它的所有子项目都不 可见的。让他通过你一种生活妙招去定义一齐的配置,但会 把构建逻辑抽取到还时要被子项目重用的妙招里。

gradle -q encode的输出结果

下面没法 让他组织你的构建逻辑的妙招摘要:

示例 59.5. 从一1个 构建运行只是构建

自定义任务。把你的构建逻辑装进去一1个 自定义任务中,但会 在多个地方复用你一种生活任务。

POGOs。让他直接在你的构建脚本中定义和使用普通的旧Groovy对象(POGOs)。别忘了构建脚本是用Groovy来写的,Groovy会向你提供一种生活优秀的妙招来组织代码。

Gradle 提供了多种组织你的构建逻辑的妙招。让他选取最适合你的领域的妙招,并在暂且要的间界引用之间找到平衡,除理冗余和难以维护的代码库。It is our experience that even very complex custom build logic is rarely shared between different builds. Other build tools enforce a separation of this build logic into a separate project. Gradle为你节省了什么暂且要的开销和间接引用。

gradle -q show 的输出结果

配置注入。在一1个 多项目构建中,一1个 项目(通常是根项目)还时要把属性和妙招注入到只是项目中。

执行一1个 实物构建。从当前的构建中执行只是Gradle构建。

child/build.gradle

对于多项目构建,定义在一1个 项目的构建脚本中的依赖,是还时要在所有子项目的构建脚本中用的。

https://github.com/msdx/gradledoc

示例 59.6. 声明构建脚本的实物依赖

build.gradle

http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。

关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qiniudn.com 上的文档为准。如发现翻译有误的地方,将首先在以上1个 地方更新。因时间精力问题报告 ,博客中发表的译文基本后会同步修改。

buildSrc 项目。把你的构建的类的源码装进去一1个 指定的目录中,但会 Gradle会自动地编译它们,并把它们饱含到你的构建脚本的classpath里。

child1/build.gradle

https://github.com/msdx/gradle-doc-apk

http://blog.csdn.net/maosidiaoxian/article/details/70880742

直接浏览双语版的文档请访问:

另外,Android 手机用户可通过我写的一1个 守护进程浏览文档,带缓存功能的,目前0.6开发中版本兼容 Android 2.3以上系统,项目地址如下:

一种生活章节的翻译请参见:

这对于客户端模块的用法也是一1个 很好的例子。在你一种生活用例中,针对 ant-commons-net 任务的Maven中央仓的POM没法 提供正确的信息。

gradle -q build的输出结果

gradle -q show 的输出结果

下面列出的是Gradle应用到 buildSrc 项目的默认构建脚本。

示例59.1. 使用继承的属性和妙招

对于多项目构建,它们肯还不能还不能 一1个 buildSrc目录,在根项目的目录中。

当你运行Gradle时,它会检查buildSrc目录是算是位于。但会 Gradle会自动的编译和测试它的代码,但会 把它们加入到你的构建脚本的classpath中。你不时要再提供任何进一步的指示。这还时只是用于加带你的自定义任务和插件的好地方。

这因为让他只把你的构建源代码装进去你一种生活目录当中,但会 保留一1个 Java/Groovy 项目的约定布局(见表 23.4,“Java 插件 - 默认项目布局”)。

The buildSrc project can be a multi-project build. 这就像一种生活常规的Gradle多项目构建。但会 ,你时要使你我应该 的所有项目在buildSrc的根项目的实际构建runtime依赖的classpath上。 让他通过把它加带到每一1个 你想导出的项目的配置上来完成:

build.gradle

让他使用在 第56.1节,“跨项目配置”和第56.2节,“子项目配置” 所论述的配置注入技术,来向不同的项目注入属性和妙招。通常来说,它是比继承更好的选取,有好好多个因为:注入是显示地位于于构建脚本中的,让他向不同的项目注入不同的逻辑,但会 让他注入任意你一种生活配置,相似仓库,插件,任务等等。下面是展示注入的例子。

build.gradle

build.gradle

图 59.1. 默认的buildSrc构建脚本

示例 59.7. 具有实物依赖的构建脚本

注意: 此例子的代码还时要在Gradle的二进制文件或源码中的 samples/multiProjectBuildSrc 里看到。

自定义插件。把你的构建逻辑装进去一1个 自定义插件中,但会 在多个项目应用你一种生活插件 。你一种生活插件时要在你的构建脚本的classpath中。让他通过使用build sources,肯能是加带一1个 饱含了该插件的实物 library,来获得你一种生活插件。

build.gradle

翻译项目请关注Github上的地址:

肯能你时要更多的灵活性,让他提供你被委托人的build.gradle。Gradle配置了一1个 默认的构建脚本,无论是算是有脚本被指定。这因为,你只需声明你所时要的额外的东西。下面是一1个 例子。请注意,此示例不时要声明对 Gradle API的依赖,肯能这由默认的构建脚本完成:

other.gradle

示例 59.4. 将子项目加带到根 buildSrc 项目

声明了构建脚本的classpath只是,让他使用构建脚本中的类,就像classpath上的任何一种生活类一样。下面的示例将加带到前面的示例中,并使用构建脚本classpath中的类。

翻译不易,转载请注明本文在CSDN博客上的出处:

共享脚本。Define common configuration in an external build, and apply the script to multiple projects, possibly across different builds.

你一种生活传给buildscript() 妙招的闭包配置了一1个 ScriptHandler 实例。让他通过加带依赖到classpath 配置来定义构建脚本的classpath。这和你定义Java编译classpath是同样的。让他使用在 第80.4节,“何如定义你的依赖”描述的除了项目依赖之外的任何依赖类型。

https://github.com/msdx/gradledoc/tree/1.12。

实物 libraries。直接在你的构架文件中使用实物libraries。

buildSrc/build.gradle

示例59.2. 使用注入的属性和妙招

另外,目前Gradle1.12版本的文档肯能翻译完并进入校稿阶段,校稿的妙招为到该项目https://github.com/msdx/gradledoc 提交issue或是pull request。校稿的结果不只是在此版本更新,也会用于改善Gradle下一版本(2.0)文档的翻译。

继承的属性和妙招。在一1个 多项目构建中,子项目会继承父项目的属性及妙招。

For reasons we don't fully understand yet, external dependencies are not picked up by Ant's optional tasks. 但没法 让他很容易地通过另你一种生活妙招做到。[26]

肯能你的构建脚本时要使用一种生活实物库,让他在你一种生活构建脚本的把它们加带到该脚本的classpath中。让他通过使用buildscript()妙招,传入一1个 定义构建脚本classpath的闭包。

Gradle 提供了多种妙招来组织你的构建逻辑。首先,让他把你的构建逻辑直接装进去一1个 任务的action闭包里。肯能1个 任务有相同的逻辑,让他把这段逻辑抽取为一1个 妙招。肯能一1个 多项目构建中的多个项目有相同的逻辑,让他把你一种生活妙招定义在父项目里。肯能构建逻辑通过妙招来正确建模复杂搞笑的话,你就要使用面向对象的模型了。[25] 这对Gradle来说很简单。只时要把你的类装进去一1个 选取的目录,Gradle会自动地对它们编译,但会 把它们加入到你的构建脚本的classpath中。

示例 59.3. 自定义buildSrc构建脚本