【问题标题】:Allow Gradle plugin to use its configuration to conditionally apply other plugins允许 Gradle 插件使用其配置有条件地应用其他插件
【发布时间】:2014-12-22 22:58:07
【问题描述】:

在插件中,我希望能够根据用户在配置闭包中放置的配置来选择应用哪些 其他 插件(例如 Nexus 插件或 Bintray 插件,但不能同时使用) 我的插件。

我通常会在项目评估后获得插件的配置。为时已晚,因为我希望允许用户自己覆盖其他插件的默认配置(因此必须提前应用它们)。

我可以将我的插件分成两个单独的插件(在同一个 JAR 中),并要求应用第一个插件,提供配置闭包,应用第二个插件并使用为第一个插件提供的配置来决定哪些 3rd 方插件申请。

有没有更好的方法让我的插件足够早地获得配置,以便能够有条件地应用其他插件(并允许它们使用它们的配置闭包)?

【问题讨论】:

    标签: gradle gradle-plugin gradle-custom-plugin


    【解决方案1】:

    你可以使用 gradle 61.5. Init script plugins。这将允许您的插件在项目配置之前运行。

    gradle 文档中的示例从构建脚本中删除存储库。这意味着您可以在 Init 脚本插件中读取您的配置并决定应用哪些插件。当然,您的配置名称应该是固定的,因此您的 Init 脚本插件应该能够读取它。

    【讨论】:

    • 但不幸的是,我希望允许用户(通过配置闭包)使用决定我的插件是否/哪些插件将应用的设置来配置我的插件。我不清楚初始化脚本如何帮助我。
    • 存储库示例并不完全相同,因为它是一个实时集合,并且使用 all {} 闭包可确保为任何和所有存储库执行代码,无论它们何时配置。不幸的是,没有一个好的方法(除了 OP 提到的afterEvaluate())来确保已配置项目扩展。
    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多