2014-12-05 67 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); 
     // ... 
    } 
    // ... 
} 
相關問題