我写了一个插件(目前只存在于 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/