2014-12-05 65 views
6

我试图incapsulate Android插件在我自己的插件,但是当我试图运用我的插件构建失败,异常:如何从另一个插件应用Gradle插件?

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插件里面我自己插件的实现:

// 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' 
     } 
    } 
} 

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

+0

请不要双击后在这里和http://forums.gradle.org。 – 2014-12-05 16:06:40

回答

5

我想当时你想添加构建脚本的插件依赖关系已经解决了,因此它不会那样工作。您需要指定您想要作为脚本依赖项应用的插件。

将工作方式:

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插件早些时候应用和有冲突。

+0

@ Pood1331,你在找什么? – Opal 2014-12-06 08:17:49

2

使用该项目的PluginManager。例如,war plugin拉在java插件这样的:

public class WarPlugin implements Plugin<Project> { 
    // ... 
    public void apply(final Project project) { 
     project.getPluginManager().apply(org.gradle.api.plugins.JavaPlugin.class); 
     // ... 
    } 
    // ... 
} 
相关问题