如何使用gradle工具api将插件应用于构建脚本?

时间:2015-03-19 09:53:50

标签: gradle gradle-tooling-api

我正在编写一个Eclipse插件,我想使用gradle工具api来检查gradle项目的构建脚本,看它是否应用了某些插件。

让我们说我有一个看起来像这样的构建脚本:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'org.dm.gradle:gradle-bundle-plugin:0.6.2'
    }
}

apply plugin: 'java'
apply plugin: 'org.dm.bundle'

repositories {
    mavenCentral()
}

sourceCompatibility = 1.7
version = '1.0'

有没有办法可以使用gradle工具api找出这个特定的gradle项目正在应用哪些插件?

我知道你可以获得项目依赖项列表,但是如何构建构建器{}依赖项?

1 个答案:

答案 0 :(得分:0)

这个问题实际上嵌入了两个独立的问题。我当时没有意识到。第一个问题应该是:

<强> 1。你如何使用tooling-api找出特定项目已应用特定插件?

这个问题的答案正是在这里处理:Gradle Tooling API Feature

您可以在此处找到该文章中使用的源代码:Tooling API Example Repo

但是我在本地构建和执行该示例时遇到了一些麻烦,所以我发布了my own fork if you want to use it的修复程序。

然后第二个问题是:

从问题#1获得必要的tooling-api模型和插件后,如何从Eclipse插件上下文执行此自定义工具脚本?

为此,您需要使用优秀的gradle integration plugin for Eclipse作为您自己的eclipse插件的依赖项。配置完成后,您只需导入已经提到的gradle plugin for eclipse导出的这些API GradleConnector,ProjectConnection,ModelBuilder

在类路径上获取您自己的本地自定义模型就像在正常机制中将jar嵌入到eclipse插件中一样简单(MANIFEST.MF条目,不要忘记build.properties包含jar)。此外,您需要为自定义gradle脚本提供一个本地存储库来拾取模型/插件类,如example github repo

中所示。