首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从另一个插件中应用Gradle插件?

如何从另一个插件中应用Gradle插件?
EN

Stack Overflow用户
提问于 2014-12-05 22:31:55
回答 2查看 9.7K关注 0票数 13

我正在尝试将android插件封装到我自己的插件中,但当我尝试应用我的插件构建失败时,会出现一个异常:

代码语言:javascript
复制
A problem occurred evaluating root project 'myproj'.
> Failed to apply plugin [id 'com.mycomp.build']
  > Failed to apply plugin [id 'android-library']
    > Plugin with id 'android-library' not found.

下面是我是如何在自己的插件实现中应用android插件的:

代码语言:javascript
复制
// build.gradle
apply plugin: 'groovy'

version = '1.0'
group = 'com.mycomp'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

// Build.groovy
package com.mycomp

import org.gradle.api.Plugin
import org.gradle.api.Project

class Build implements Plugin<Project> {
    void apply(Project project) {
        println 'Hello from com.mycomp.Build'
        project.beforeEvaluate {
            buildscript.configurations.classpath += 
                'com.android.tools.build:gradle:1.0.0-rc1'
        }

        project.configure(project) {
            buildscript.repositories.mavenCentral()
            apply plugin: 'android-library'
        }
    }
}

由于某些原因,类路径没有正确加载,我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2014-12-06 01:18:30

我猜你想要添加的构建脚本的插件依赖关系已经解决了,因此它不会以这种方式工作。您需要指定要作为脚本依赖项本身应用的插件。

它将以这种方式工作:

代码语言:javascript
复制
buildscript {
   repositories {
      mavenCentral()
   }

   dependencies {
      classpath 'com.android.tools.build:gradle:1.0.0-rc1'
   }
}


apply plugin: 'groovy'
apply plugin: Build

version = '1.0'
group = 'com.mycomp'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

import org.gradle.api.Plugin
import org.gradle.api.Project

class Build implements Plugin<Project> {
    void apply(Project project) {
        project.configure(project) {
            apply plugin: 'android-library'
        }
    }
}

现在,找到了android-plugin,但它失败了,因为之前已经应用了groovy插件,并且存在冲突。

票数 10
EN

Stack Overflow用户

发布于 2017-08-13 00:57:22

使用项目的PluginManager。例如,war plugin会像这样引入java插件:

代码语言:javascript
复制
public class WarPlugin implements Plugin<Project> {
    // ...
    public void apply(final Project project) {
        project.getPluginManager().apply(org.gradle.api.plugins.JavaPlugin.class);
        // ...
    }
    // ...
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27318144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档