在gradle中,将buildSrc
文件用作顶层的目的是什么,而不是仅使用典型的Java项目布局(src / main / java)?
如果我有一个布局
src
main
java
要么
buildSrc
src
main
java
有什么区别(或这样做的原因)?在多模块项目中是否更有用?即使对于多模块项目,我也不能做类似的事情
proj1
src
proj2
src
然后只有一个顶级build.gradle(与
proj1
和proj2
处于同一级别),它定义了项目中的通用设置? 最佳答案
buildSrc
是一个单独的构建,其目的是构建打算在主构建的构建脚本中使用的任何任务,插件或其他类,但不必在各个构建之间共享。(*)可以将此类构建为主要构建的一部分,因为它们必须在主要构建的构建脚本甚至可以被编译/评估之前就存在,并且Gradle在完成任何工作之前对其进行编译/评估(配置与执行阶段) )。
与将所有构建代码放入构建脚本相比,buildSrc
为您提供了一种开发常规代码的方式,就像可以测试的类,可以导入到IDE等的常规代码一样。这是保持构建脚本简单甚至干的一种方法对于更复杂的构建。buildSrc
在多项目构建中更常见,原因仅在于较大的构建更可能实现自己的自定义任务和插件。
随着时间的流逝,buildSrc
将发展为更通用的功能,可以在单个Gradle调用中执行多个相关的构建。
(*)可以跨构建共享类,但涉及更多。特别是,您需要将这些类发布到存储库,并且使用构建时必须从那里显式导入它们,类似于在构建之间共享生产库时。