gradle - 如何让我的 Gradle 插件自动执行它的任务?

标签 gradle gradle-plugin

我写了一个插件(目前只存在于 buildSrc 中),它创建了几个任务,这些任务的名称基于用户提供的值。我怎样才能使它们在运行应用插件的构建脚本时执行?它不需要在执行阶段的任何特定点运行。

最佳答案

首先,您将了解基本的 Gradle 概念。 Gradle 任务 并非设计为在每次 Gradle 调用时运行。如果您确实需要在每次 Gradle 调用时运行代码,请在配置阶段直接执行它,而不是将其包装在任务中。

但是,任务在 Gradle 构建上运行有两个原因:

  • 直接选择(通过命令行或settings.startParameter.taskNames修改)
  • 通过一个或多个任务依赖(dependsOn/finalizedBy)

当然,您可以使用其中一种方法来规避 Gradle 并在每次构建时执行您的任务(@mkobit 使用第二种方法),但是由于您的插件基本上会破坏 Gradle 的基本原则,因此您解决方案可能会在未来某个时间或更复杂的项目中失败(因为插件应该是可重用的)。

作为总结,我建议将所有生成的任务捆绑在一个具有常量名称的任务中,这样您的用户就可以通过在他的 settings.gradle 中放置一行来轻松地在每次 Gradle 调用时运行该任务 文件:

startParameter.taskNames.add '<bundleTask>'

关于gradle - 如何让我的 Gradle 插件自动执行它的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48568849/

相关文章:

kotlin - Gradle 强制为您带来错误版本的 Kotlin 依赖项

java - 在 Gradle 插件中使用 Ant 的 xslt 任务并使其找到资源

java - 无法解析 : firebase-analytics failed to resolve:play-service-base

gradle - Gradle依赖关系的可视化表示

gradle - 当文档说它必须返回Parent类型时,为什么gradle Project API会为getParent()返回String?

Android Gradle 产品 flavor 在子库中失败

gradle - gradle将不再同步插件

maven - 插件本身无法添加buildscript依赖项,然后应用dokka-android插件

android - 错误 :Cause: buildToolsVersion is not specified in build. 等级(项目:xxx)

android - 资源链接失败,错误 : resource android:attr/dialogCornerRadius not found