前言
当我以软件开发开始我的职业生涯时,我完全没有意识到对项目自动化的需求。我选择IDE作为开发工具,它可以让我运行所有需要的任务,并完成自动化软件开发环节。2003年,Rainer Sawitzki',我所在项目的一个外部咨询师,他向我介绍了Ant。我觉得它简直太神奇了,Ant 能够通过已有的功能帮助我描述大部分自动化逻辑,并按照预定义的顺序执行。尽管定义语言是XML (曾经有那么一段时间XML还是很流行的),通过给不同的目标平台构建产品,给Web容器编写部署逻辑和配置持续集成服务器,我的野心开始变得越来越大。
从那时起,自动化的需求发生了巨大的变化。项目变得越来越大,也越来越复杂。部署和交付模式已经远比之前麻烦。这些年为了满足自动化需求,我探索了许多其他类型的构建工具,但我总是会发现有不合逻辑的地方。许多开发者接受和维持这种现状,因此给他们留下了一些痛苦的经历。很少有话题去真正地讨论这个问题”,而不仅仅是赞成或者反对构建工具,以及为什么如此地不喜欢构建工具。本文的目的并不是要说服你从当前的构建工具切换到Gradle.如果你很满意你的配置方式(不管你用的什么),无论怎样,要坚持住。而我会更多地谈论Gradle带来的巨大创新,以及与现有解决方案的对比。我诚心地请求你做出自己的判断。
在我的头脑里,我带着一种特殊的目的开始写这本文:教给你Gradle的核心概念,但不止于此。在一个拥抱持续集成和持续交付实践的软件开发世界,你必须考虑一个问题,那就是将构建系统集成到工具的生态系统中。但愿,我在这本文里找到了平衡点。如果你有任何问题、评论或者想法,我都非常愿意去倾听。
路线图
本文分为三部分。
第1部分介绍了Gradle的概念和思想,解释了它和其他构建工具的不同以及如何编写脚本来自动化简单的任务。
第2部分探索了工具的构建模块以及更深层次的核心技术。你应该能够使用这些知识去实现复杂的和可扩展的企业级构建。
第3部分描述了如何在持续交付中使用Gradle,主要集中在多语盲构建、代码质量、工件组装和部署等话题上。
目录
第1部分,Gradle 介绍:
- 项目自动化介绍—— 本章简单介绍了为什么要实现项目自动化,以及构建工具是如何帮助做到这一点的。
- 下一代构建工具: Gradle—— Gradle 和其他的基于JVM语言的构建工具有什么不同?本章覆盖了Gradle丰富的特性集,以及它是如何在持续交付的部署管道中帮助自动化软件交付过程的。作为初次体验,你会写一个简单的构建脚本,并在命令行中运行它。
- 通过范例学习构建Gradle项目——本章以一个基于Java的Web应用为例说明Gradle的一些核心特性。我们会针对标准的和非约定的用例,探索Java插件的使用,验证这种高效率的工具是如何彻底改变开发速度的。
第2部分 掌握基本原理
-
构建脚本概要——哪些是一个Gradle项目的主要构建块?本章讨论了重要领域对象的使用,即项目和任务。我们会去了解这些对象如何映射到GradleAPI中相关的类、Gradle 的构建生命周期、增量构建特性,以及注册生命周期钩子的机制。
-
依赖管理——没有哪个企业级项目能够不重用外部库提供的功能。本章将探索Gradle对声明式依赖管理的支持、版本冲突的解决策略以及Gradle缓存的内部工作方式。
-
多项目构建——你的项目是否由多个模块化组件组成?本章覆盖了在一个多项目设置中组织构建逻辑的方式、如何声明项目依赖,以及如何进行部分构建以提高执行效率。
-
Gradle 测试——测试功能代码 是软件开发生命周期中的-一个重要环节。在这一章的最后,你会用JUnit. TestNG 和Spock去写测试,并将它们作为构建生命周期的一-部分去执行。你也会学习如何配置测试的执行、注册监听器去响应测试生命周期事件,并在source sets的帮助下组织不同类型的测试。
-
扩展Gradle——Gradle提供了可扩展的领域对象模型。如果你想要添加一 个全新的功能到项目中或者扩展已有的领域模型,那么这一章很适合你。 你会学习如何编写属于自己的插件,来将样例应用程序部署到云端。
-
集成与迁移——在本章中,我们会看到Gradle如何与Ant和Maven集成。我们也会探索迁移策略,以防你决定长期使用Gradle.
第3部分 从构建到部署
-
IDE支持和工具——IDE是提高开发人员生产力的关键因素。本章将介绍Gradle生成如Eelipse Ineli和NetBeans这些流行的IDE工程文件的能力。我们也将讨论在这些IDE中如何使用和管理基于Gradle的项目。
-
构建多语言项目——在本章中,我们将通过案例学习的方式讨论Gradle是如何面对组织和构建多语言项目的挑战的。集成的语言包括JavaScript.Groovy和Scala.
-
代码质量管理和监测——本章我们会集中在这样- -些工具上,它们能够检测代码质量,并可视化结果来帮助你准确地找到代码中的问题。读完这一章之后,你就会知道如何将代码质量工具集成到构建中。
-
持续集成——持续集成(CI) 是-种软件开发实践,源代码会被频繁地集成在一起,最好是一- 天集成多次。本章将讨论在Jenkins (-种开源的持续集成服务器),上运行Gradle的安装和配置过程。
-
打包和发布——一个构建要么是二进制工件的消费者,要么是生产者。本章探索了工件的组装过程,以及要发布工件到二进制仓库所需要的配置,包括它们的元数据。
-
基础环境准备和部署——一个可配置的目标环境是任何软件开发的先决条件。在这一章中,我们会讨论在以自动化的方式,建设和配置环境以及服务中“基础设施即代码”的重要性。之后,你会使用Gradle实现一个经典的部署过程。
总结
本文主要提供给那些想要实现一-种易读和可扩展的重复构建的开发者和自动构建工程师。我假设你已经对面向对象编程语言有了基本了解。如果你拥有Java 语言的开发知识,你应该能够理解本文中的大部分内容。
在本文中,你会大量使用Groovy。然而,我不会假设你已经拥有使用该语言的经验。如果想要了解Groovy,请看附录B--- Gradle 用户所需要了解的Groovy.如果你想要深入学习关于这种语言的高级部分,该附录也提供了一些额外的参 考资料。
贯穿本文的全部章节,我们会接触一些与自动化构建打交道时不可绕开的话题。如果你拥有以下这些知识,会对你阅读本文有所帮助: Ant、lvy 和Maven工具:持续集成和持续交付的实践:依赖管理的概念。但是如果这些不是你的技术背景,你.也不用担心。每一章节都会非常详细地解释“为什么”。
小编已将本文整理成文档格式,想要获取的小伙伴可以私信我获取,私信关键字【666】即可免费获取,觉得本文好的,小编在请大家多多帮忙转发,点赞。
关注我了解更多程序员资讯技术,领取丰富架构资料
网友评论