3

我正在编写一个 Eclipse 插件,我想使用 gradle tooling 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 tooling api 来找出这个特定的 gradle 项目正在应用哪些插件?

我知道你可以得到项目依赖的列表,但是 buildscript{} 依赖呢?

4

1 回答 1

0

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

1.你如何使用tooling-api来找出一个特定的项目已经应用了一个特定的插件?

这个问题的答案在这里得到了精确的处理:Gradle Tooling API Feature

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

但是,我在让该示例在本地构建和执行时遇到了一些麻烦,因此如果您想使用它,我会在我自己的 fork上发布一个修复程序。

那么第二个问题是这样的:

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

为此,您需要使用优秀的 Eclipse gradle 集成插件作为您自己的 eclipse 插件的依赖项。配置完成后,您可以简单地导入这些 API GradleConnector、ProjectConnection、ModelBuilder ,这些 API 由前面提到 的 eclipse 的 gradle 插件导出。

在类路径上获取自己的本地自定义模型就像按照正常机制将 jar 嵌入到 eclipse 插件中一样简单(MANIFEST.MF 条目,不要忘记 build.properties 以包含 jar)。此外,您还需要有一个可用于自定义 gradle 脚本的本地存储库,以获取模型/插件类,如示例 github存储库中所示

于 2015-03-23T05:24:50.690 回答