开发人员使人们的生活更轻松,而Gradle使开发人员的生活更轻松。 如果您使用Android编写,则本文适合您。 了解此Gradle(扰流器:他是大象)是哪种野兽,以及如何与他合作。
Gradle是一个自动构建系统,用于简化Java的使用。 使用(有条件的)标准化工具,它可以帮助开发人员构建正确的产品而不会失去其独特性。 毕竟,使用Gradle的过程不仅仅是选择模板。 但是首先是第一件事。

在哪里下载Gradle
您可以在官方网站上下载Gradle。 我们建议手动下载和安装所有内容(这样看来生活不会像覆盆子一样)。 有关说明和所有必要的链接,请参阅《安装Gradle》>《 手动安装》 。 顺便说一句,我们建议您阅读所有内容。 仅此而已。 说真的
在此页面上,您需要选择系统版本,然后单击“仅二进制”。 然后-按照说明中的说明解压缩zip归档文件并设置PATH环境变量。 如果一切都正确完成,则在安装后,gradle -v命令应显示所选系统的版本。
有时,事实证明,在定义期间,系统会在意外的地方找到Gradle。 在Windows上,解决方法如下:
对于(gradle.bat)中的i,我做echo 。 %〜$路径:i
如何与Gradle合作
Gradle并非特定于平台。 另外,系统使用不同的编程语言。 最受欢迎的是Groovy DSL和Kotlin(但是您可以在其他文件上写东西)。 本文将使用第一个选项,因为这是Gradle中的标准任务描述语言。
在开始之前,请再次注意术语:“任务”和“插件”。 毕竟,所有与系统有关的工作都建立在它们之上。 插件提供并创建任务。 任务是需要完成的动作。 一切都非常简单。
您可以在插件说明中阅读有关此内容的更多信息: JavaCompile (添加新任务), SourceSet (添加新域对象)。 插件还可以使用约定并扩展对象。 例如,使用插件,您可以添加新的DSL元素和/或配置它们。
安装Gradle时会自动创建“核心插件”集。 在第一阶段,建议使用“实用程序”类别,即“ Build Init Plugin”插件。 它提供了用于初始化系统中项目的任务。 您可以从站点列表中选择项目类型。
使其成为java-application 。
任务:gradle init --type Java应用程序
之后,新文件将出现在文件夹中。 其中:
- gradle文件夹(注意,不是.gradle)和gradlew.bat文件是包装器,包装器;
- build.gradle文件-一个脚本 ,其中指示特定项目的库,框架,插件和任务。
最后一个文件将显示插件部分。 该插件已经附加了任务。 可以使用gradletasks命令查看其列表。
任务
按功能按块显示。 每一个都给出了简短的描述。 理解需要基本的英语知识。 如果您不在此群组中,那么任何翻译人员都可以。 build.gradle中没有复杂的语言构造。
选择任务并成功完成之后,您将在底部看到绿色的题词“ BUILD SUCCESSFUL”。 这意味着(您很幸运)一切顺利。 同样在系统底部将提供简短的报告。
如果状态为“已执行”-任务确实完成。 如果是“最新”-不。 这并不意味着发生某种故障。 在这种状态下,任务原则上不需要解决方案,即其对象已经是最新的。
发生这种情况是因为Gradle自动生成了“ 最新检查 ”-一种增量构建,其目的是优化系统。 因此,无法解决已经完成或不需要采取措施的任务。
您可以禁用此构建。 手动。 为此,您必须使用--rerun-tasks标志来完成任务。 如果一切正确完成,所有任务的状态将更改为“已执行”。
Gradle还允许您查看不同级别的日志。 例如,gradle run -i命令将允许您阅读有关系统操作的参考消息,run -q命令将启用静默模式,run -d将显示所有日志消息,等等。有关日志的完整列表和有关日志系统的其他信息,请参见此处 。
依存关系
依赖管理-指定项目所需的库或框架。 Gradle必须在某些时候包括这些依赖关系,以便最后(正确地)正确构建应用程序。 构建脚本中用于java-application的gradle init命令自动调用有关2种配置的信息。
实现负责传递性:用户将看不见其依赖项。 TestImplementation扩展了先前的配置。 因此,它们协同工作。
为了更好地理解依赖关系以及如何使用它们,请阅读官方手册中的“ 管理依赖关系配置 ”一章。 顺便说一句,“ API和实现分离 ”详细说明了API和实现以及它们之间的区别。
如果需要在最终工件中包括依赖关系,则需要在jar任务的设置中指定jar文件清单所需的所有信息。 如何正确执行操作,例如, 在这里 。
接下来,您需要在jar中包含依赖项。 这对于编译是必需的。
太复杂了吗? 使用“ Gradle Shadow插件 ”。
gradle --console普通依赖项命令在列表中显示所有配置及其依赖项的列表。 该系统还为开发人员提供了一个过滤器,该过滤器从列表中排除了依赖项(渐变-控制台普通依赖项|查找“-”)-有些更为方便。
最常见的依赖类型:
- 外部-从外部存储库加载;
- 设计-取决于特定项目中的模块;
- 文件-连接为jar或aar档案。
由开发人员决定使用哪个。
对于Java,一切都在Dependency management中定义良好。
生活骇客
尽管Gradle是流行且相关的自动组装系统,但许多人对此还是有疑问。 这里有一些建议,可以使Android开发人员的生活更轻松:
使用控制台。 查找命令有时会出现问题,并且当您更改build.gradle时,系统可能会崩溃,或者通常会重新加载项目。 因此,专家建议直接从控制台调用Gradle。
Vrapper通常会随项目一起进行。 可以直接访问Linux和macOS。 在Windows上,调用bat文件而不是包装器。
Gradle将缓存存储1天。 可以重新配置。 您需要编辑代码:
// build.gradle configurations.all { resolutionStrategy.cacheChangingModulesFor - , 'hours' resolutionStrategy.cacheDynamicVersionsFor - , 'minutes' }
-–refresh-dependencies-一个有用的命令,它将开始更新Gradle中的所有依赖关系。 验证时如果缓存中的某些数据损坏,它可能会派上用场。 如果缓存数据已损坏且已验证和更新(如果不同),则使用起来很方便。
在使用自动生成系统时,请使用CI(持续集成)。 让单元测试针对所有提交运行。 另外,专家建议连接单元测试。 这可以在Android Studio中完成。
此组合将更早检测到错误。 尽管这会减慢启动过程的速度,但开发人员将来仍可以放松。 因此,未来生活必不可少。
再试一次。 吓人的 (我们也使用)实际上,同步并不一定总是需要立即重新启动。 首先,专家建议检查整个系统。 例如,使用任何简单的命令-这将有助于了解下一次同步成功的机会。
使用Gradle设置IntelliJ IDEA开发环境。 这将优化工作流程,并使用魔术列表。
对于从Android Studio命令行使用Gradle的人员的提示。 检查错误“启动Gradle守护程序,无法重用1个不兼容的错误”(#68374709)。 这是开发人员尚未修复的系统的祸害。
Gradle的主要问题之一是“ Gradle构建失败”。 如果您已经知道这一点,我们可以不加赘述地做。 如果没有,祝你好运。

但是,Gradle的主要问题有所不同。 在专家圈中,构建系统所需的时间一直是(非常可悲的)传奇。 不可能加快工作,至少不会明显加快。
所以无论如何您都必须等待。
例如,您可以像《星际穿越》一样飞向太空。

结论
尽管存在所有缺点,但Gradle是一个很好的解决方案。 自动组装将节省您的时间和精力(无论上一段落听起来多么讽刺)。 而且-使您的应用程序更清洁。 系统将发现任何错误,并且在修复之前(不计任何费用)将不允许您完成工作。
