理解插件的实现选项
选择脚本插件、预编译脚本插件或二进制插件取决于您的具体需求和偏好。
脚本插件简单易写。它们使用 Kotlin DSL 或 Groovy DSL 编写。适用于小型、一次性任务或快速实验。但是,随着构建脚本的大小和复杂性增加,维护难度也会增加。
预编译脚本插件是编译成打包在库中的 Java class 文件的 Kotlin 或 Groovy DSL 脚本。与脚本插件相比,它们提供了更好的性能和可维护性,并且可以在不同的项目中重用。您也可以使用 Groovy DSL 编写它们,但不推荐这样做。
二进制插件是使用 Java、Groovy 或 Kotlin 编写的完整插件,编译成 JAR 文件并发布到仓库中。它们提供了最佳的性能、可维护性和可重用性。适用于需要在项目、构建和团队之间共享的复杂构建逻辑。您也可以使用 Scala 或 Groovy 编写它们,但不推荐这样做。
以下是实现 Gradle 插件的所有选项的详细分解
# | 使用语言/DSL | 类型 | 插件是 | 推荐? |
---|---|---|---|---|
1 |
Kotlin DSL |
脚本插件 |
在 |
否[1] |
2 |
Groovy DSL |
脚本插件 |
在 |
否[1] |
3 |
Kotlin DSL |
预编译脚本插件 |
一个 |
是 |
4 |
Groovy DSL |
预编译脚本插件 |
一个 |
可接受[2] |
5 |
Java |
二进制插件 |
在 Java 中作为实现 |
是 |
6 |
Kotlin / Kotlin DSL |
二进制插件 |
在 Kotlin 和/或 Kotlin DSL 中作为实现 |
是 |
7 |
Groovy / Groovy DSL |
二进制插件 |
在 Groovy 和/或 Groovy DSL 中作为实现 |
可接受[2] |
8 |
Scala |
二进制插件 |
在 Scala 中作为实现 |
否[2] |
如果您怀疑插件代码存在问题,请尝试创建构建扫描来识别瓶颈。Gradle profiler 可以帮助自动化构建扫描的生成并收集更多底层信息。