允许Gradle插件使用其配置有条件地应用其他插件

允许Gradle插件使用其配置有条件地应用其他插件,gradle,gradle-plugin,gradle-custom-plugin,Gradle,Gradle Plugin,Gradle Custom Plugin,在插件中,我希望能够根据用户在my插件的配置闭包中放置的配置,选择其他插件应用的内容(例如Nexus插件或Bintray插件,但不是两者都适用) 我通常会在项目评估后得到插件的配置。这太晚了,因为我想让用户在自己的插件中覆盖其他插件的默认配置(因此必须更早应用它们) 我可以将我的插件分成两个独立的插件(在同一个JAR中),并要求应用第一个插件,提供配置闭包,应用第二个插件,然后使用为第一个插件提供的配置来决定应用哪一个第三方插件 是否有更好的方法提前获得我的插件的配置,以便能够有条件地应用其他插

在插件中,我希望能够根据用户在my插件的配置闭包中放置的配置,选择其他插件应用的内容(例如Nexus插件或Bintray插件,但不是两者都适用)

我通常会在项目评估后得到插件的配置。这太晚了,因为我想让用户在自己的插件中覆盖其他插件的默认配置(因此必须更早应用它们)

我可以将我的插件分成两个独立的插件(在同一个JAR中),并要求应用第一个插件,提供配置闭包,应用第二个插件,然后使用为第一个插件提供的配置来决定应用哪一个第三方插件

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

您可以使用gradle。这将允许您的插件在项目配置之前运行


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

但不幸的是,我希望允许用户(通过配置闭包)配置我的插件,设置决定我的插件是否应用/应用哪些插件。我不清楚init脚本如何帮助我实现这一点。存储库示例实际上并不相同,因为它是一个实时集合,使用
all{}
闭包可以确保对任何和所有存储库执行代码,而不管它们是在什么时候配置的。不幸的是,除了OP提到的
afterEvaluate()
,没有一个好的方法来确保项目扩展已被配置。