3

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

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

4

1 回答 1

1

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

这有点复杂,但您需要在构建中添加一个初始化脚本(例如 via 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。

于 2020-06-18T10:08:14.327 回答