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

3
在插件中,我希望能够根据用户在“我的”插件的配置闭包中定义的配置,选择应用哪些其他插件(例如Nexus插件或Bintray插件,但不能同时应用)。通常在项目被评估后才会获取到“我的”插件的配置,这已经太晚了,因为我想允许用户覆盖那些其他插件的默认配置(所以它们必须更早地被应用)。我可以将我的插件拆分成两个独立的插件(位于同一个JAR文件中),并要求首先应用第一个插件,提供配置闭包,再应用第二个插件,并使用第一个插件提供的配置来决定应用哪些第三方插件。有没有更好的办法可以更早地获取到“我的”插件的配置,以便有条件地应用其他插件(并允许它们使用自己的配置闭包)?
1个回答

0

您可以使用Gradle 61.5.初始化脚本插件。这将允许您的插件在项目配置之前运行。

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


但不幸的是,我想允许用户通过配置闭包来配置我的插件,以决定是否/何时应用插件。我不清楚初始化脚本如何帮助我实现这一点。 - Marcin Zajączkowski
“repositories”示例并不完全相同,因为它是一个实时集合,并且使用all {}闭包可以确保代码针对任何和所有存储库执行,而不管它们何时配置。除了OP提到的afterEvaluate()之外,不幸的是没有很好的方法来确保项目扩展已被配置。 - Mark Vieira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接