【问题标题】:How to extract plugins from a build.gradle file?如何从 build.gradle 文件中提取插件?
【发布时间】:2013-10-29 19:12:29
【问题描述】:

为了简化我的构建,我想从“build.gradle”中提取自定义插件并将它们放入单独的 gradle 文件中。

这是我能想到的最简单的例子。


1。在 build.gradle (WORKS) 中定义一个插件

以下“build.gradle”:

apply plugin: GreetingPlugin

class GreetingPlugin implements Plugin<Project> {

    void apply(Project project) {

        project.task('hello') << {
            println "Hello, World"
        }
    }
}

当你运行时:

gradle hello

生产:

:hello
Hello, World

BUILD SUCCESSFUL


2。从 build.gradle 中提取插件(不工作)

我想将插件定义移动到另一个文件“hello.gradle”中:

class GreetingPlugin implements Plugin<Project> {

    void apply(Project project) {

        project.task('hello') << {
            println "Hello, World"
        }
    }
}

并将“build.gradle”更改为:

apply from: 'hello.gradle'
apply plugin: GreetingPlugin

现在当我跑步时:

gradle hello

它产生:

FAILURE: Build failed with an exception.

* Where:
Build file 'build.gradle' line: 2

* What went wrong:
A problem occurred evaluating root project 'gradle-problem'.
> Could not find property 'GreetingPlugin' on root project 'gradle-problem'.

BUILD FAILED

Total time: 1.723 secs

我确定这一定是可能的,那么你是怎么做到的?

【问题讨论】:

    标签: plugins import gradle build.gradle


    【解决方案1】:

    我找到了两个合理的解决方案:

    1。在外部文件中应用插件

    你好.gradle:

    应用插件:GreetingPlugin 类 GreetingPlugin 实现 Plugin { 无效申请(项目项目){ project.task('hello').doLast { println "你好,世界" } } }

    build.gradle:

    apply from: 'hello.gradle'
    


    2。通过将插件类添加到 ext 属性来导出插件类

    你好.gradle:

    类 GreetingPlugin 实现 Plugin { 无效申请(项目项目){ project.task('hello').doLast { println "你好,世界" } } } ext.GreetingPlugin = GreetingPlugin

    build.gradle:

    apply from: 'hello.gradle'
    apply plugin: GreetingPlugin
    

    【讨论】:

      猜你喜欢
      • 2023-02-09
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多