使用Gradle Tooling API以编程方式获取Gradle插件

3

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

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

1个回答

1
工具API在查询构建时有限制,并且没有API列出构建插件,但是工具API允许您添加自己的插件和模型,以便您可以用于查询构建。
这有点复杂,但是您需要向构建中添加init script(例如通过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。

请问您如何确定部署的 URL,以便上传任务在运行时选择?对于 uploadArchive 任务,根据构件版本或发布类型,它可以选择 SnapshotURL 或 ReleaseURL。如何在运行时获取部署 URL,在 init.gradle 中读取该 URL?请提供建议。具体问题可以参考 How to determine the deployment url, uploadArchive task will pick at runtime - user3142041

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