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

  • 时间:
  • 浏览:3
  • 来源:神彩排列三_彩神排列三官方

child1/build.gradle

build.gradle

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

注意: 此例子的代码不会 在Gradle的二进制文件或源码中的 samples/multiProjectBuildSrc 里看多。

本文翻译所在分支:

要我使用在 第56.1节,“跨项目配置”和第56.2节,“子项目配置” 所论述的配置注入技术,来向不同的项目注入属性和辦法 。通常来说,它是比继承更好的选取,有好几个意味着:注入是显示地指在于构建脚本中的,要我向不同的项目注入不同的逻辑,而且 要我注入任意一种配置,类式仓库,插件,任务等等。下面是展示注入的例子。

你这人 章节的翻译请参见:

意味着你的构建脚本时需使用你这人 内部内部结构库,要我在一种构建脚本的把它们去掉 到该脚本的classpath中。要我通过使用buildscript()辦法 ,传入4个多定义构建脚本classpath的闭包。

buildSrc/build.gradle

内部内部结构 libraries。直接在你的构架文件中使用内部内部结构libraries。

自定义插件。把你的构建逻辑放满4个多自定义插件中,而且 在多个项目应用一种插件 。一种插件时需在你的构建脚本的classpath中。要我通过使用build sources,意味着是去掉 4个多暗含了该插件的内部内部结构 library,来获得一种插件。

下面那个她 不会 组织你的构建逻辑的辦法 摘要:

对于多项目构建,定义在4个多项目的构建脚本中的依赖,是不会 在所有子项目的构建脚本中用的。

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

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

自定义任务。把你的构建逻辑放满4个多自定义任务中,而且 在多个地方复用一种任务。

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

继承的属性和辦法 。在4个多多项目构建中,子项目会继承父项目的属性及辦法 。

任何定义在4个多项目的构建脚本中的属性和辦法 ,对于它的所有子项目总要可见的。要我通过一种辦法 去定义一起去的配置,而且 把构建逻辑抽取到不会 被子项目重用的辦法 里。

示例 59.8. Ant 的可选依赖

buildSrc/build.gradle

other.gradle

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

build.gradle

For reasons we don't fully understand yet, external dependencies are not picked up by Ant's optional tasks. 但那个她 不会 很容易地通过另一种辦法 做到。[26]

gradle -q show 的输出结果

build.gradle

https://github.com/msdx/gradledoc

配置注入。在4个多多项目构建中,4个多项目(通常是根项目)不会 把属性和辦法 注入到只是 项目中。

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

当你运行Gradle时,它会检查buildSrc目录否有有指在。而且 Gradle会自动的编译和测试它的代码,而且 把它们加入到你的构建脚本的classpath中。你不时需再提供任何进一步的指示。这能否有用于去掉 你的自定义任务和插件的好地方。

意味着你时需更多的灵活性,要我提供你你这人 人的build.gradle。Gradle配置了4个多默认的构建脚本,无论否有有有脚本被指定。这意味着,你只需声明你所时需的额外的东西。下面是4个多例子。请注意,此示例不时需声明对 Gradle API的依赖,意味着这由默认的构建脚本完成:

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

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为你节省了什么不要再要的开销和间接引用。

示例59.2. 使用注入的属性和辦法

gradle -q encode的输出结果

示例 59.5. 从4个多构建运行只是 构建

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

示例 59.7. 具有内部内部结构依赖的构建脚本

Gradle 提供了多种辦法 来组织你的构建逻辑。首先,要我把你的构建逻辑直接放满4个多任务的action闭包里。意味着4个多任务有相同的逻辑,要我把这段逻辑抽取为4个多辦法 。意味着4个多多项目构建中的多个项目有相同的逻辑,要我把一种辦法 定义在父项目里。意味着构建逻辑通过辦法 来正确建模比较繁杂励志的话 ,你就要使用面向对象的模型了。[25] 这对Gradle来说很简单。只时需把你的类放满4个多选取的目录,Gradle会自动地对它们编译,而且 把它们加入到你的构建脚本的classpath中。

示例 59.4. 将子项目去掉 到根 buildSrc 项目

执行4个多内部内部结构构建。从当前的构建中执行只是 Gradle构建。

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

build.gradle

POGOs。要我直接在你的构建脚本中定义和使用普通的旧Groovy对象(POGOs)。别忘了构建脚本是用Groovy来写的,Groovy会向你提供你这人 优秀的辦法 来组织代码。

gradle -q show 的输出结果

示例 59.6. 声明构建脚本的内部内部结构依赖

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

示例59.1. 使用继承的属性和辦法

buildSrc 项目。把你的构建的类的源码放满4个多指定的目录中,而且 Gradle会自动地编译它们,并把它们暗含到你的构建脚本的classpath里。

The buildSrc project can be a multi-project build. 这就像你这人 常规的Gradle多项目构建。而且 ,你时需使你要我的所有项目在buildSrc的根项目的实际构建runtime依赖的classpath上。 要我通过把它去掉 到每4个多你想导出的项目的配置上来完成:

对于多项目构建,它们意味着只4个多多buildSrc目录,在根项目的目录中。

声明了构建脚本的classpath只是 ,要我使用构建脚本中的类,就像classpath上的任何你这人 类一样。下面的示例将去掉 到前面的示例中,并使用构建脚本classpath中的类。

build.gradle

child/build.gradle

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

一种传给buildscript() 辦法 的闭包配置了4个多ScriptHandler 实例。要我通过去掉 依赖到classpath 配置来定义构建脚本的classpath。这和你定义Java编译classpath是同样的。要我使用在 第100.4节,“何如定义你的依赖”描述的除了项目依赖之外的任何依赖类型。

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

gradle -q build的输出结果

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

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

build.gradle

图 59.1. 默认的buildSrc构建脚本

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

要我使用GradleBuild 任务。要我通过使用 dir 或 buildFile 属性来指定执行哪4个多构建,以及使用 tasks 属性来指定执行哪4个多任务。

这意味着要我只把你的构建源代码放满一种目录当中,而且 保留4个多 Java/Groovy 项目的约定布局(见表 23.4,“Java 插件 - 默认项目布局”)。