使用 Gradle 工具接口以编程方式获取 Gradle 插件



我正在使用 Gradle 工具 API 来获取有关 Gradle 项目的不同见解,例如项目任务、Gradle 版本等。

这种分析的一部分要求我知道项目应用了哪些插件(直接和传递(。 我找不到从工具 API 获取项目插件的方法。 有没有办法做到这一点?

工具API在如何查询构建方面受到限制,并且没有API来列出构建插件,但是工具API允许您添加自己的插件和模型,您可以使用它们来查询构建。

这有点复杂,但你需要添加一个init脚本到构建中(例如通过init.gradle(来提供你的自定义模型和插件来查询构建。

这是一个很好的存储库,演示了如何做到这一点:https://github.com/melix/gradle-tapi-demo-artifacts

以下是该存储库中的一些代码,演示了如何使用自定义插件和模型列出构建工件:

ModelBuilder<OutgoingArtifactsModel> customModelBuilder = connection.model(OutgoingArtifactsModel.class);
customModelBuilder.withArguments("--init-script", copyInitScript().getAbsolutePath());
OutgoingArtifactsModel model = customModelBuilder.get();
for (File artifact : model.getArtifacts()) {
System.out.println("artifact = " + artifact);
}

如果要列出插件,可以使用project.getPlugins()API。

最新更新