2013-07-25 4 views
0

Я пытаюсь расширить функциональность градиента Android plugin. Дело в том, что мне нужно дважды выполнять одни и те же задания на одной сборке (фактически целая цепочка задач до connectedInstrumentTest), и поскольку я не мог справиться с этим, используя только граду, я решил написать свой собственный плагин это будет расширение существующего Android-плагина. Итак, теперь я пытаюсь использовать функциональность плагина Android в моем, используя такой заводной код:Плагин Gradle, выполнение задач дважды во время сборки

void apply(Project project) { 

    project.plugins.apply(JavaPlugin.class) 
    project.plugins.apply(AndroidPlugin.class) 

    this.project = project 
    this.logger = project.logger 

    AndroidPlugin a = new AndroidPlugin() 
    a.apply(project) 

Но, пытаясь собрать его, я получаю сообщение об ошибке:

импорта com.jvoegele .gradle.plugins.android.AndroidPlugin

Я использую такой build.gradle скомпилировать мой плагин:

buildscript { 
    repositories { 
mavenCentral() 
} 
    dependencies { 
classpath 'com.android.tools.build:gradle:0.4.2' 
} 
} 
apply plugin: 'groovy' 
dependencies { 
compile gradleApi() 
compile localGroovy() 
} 

Кроме того, поскольку я впервые использую groovy, у меня есть некоторые трудности с переопределяющими методами. Я попробовал это, но это не похоже на работу:

MetaMethod proces = AndroidPackageTask.metaClass.pickMethod("process") 
    proces = { 
     println("ggggggg") 
    } 

Итак, кто может сказать, что это неправильно компилирование плагин, или как использовать задачи дважды в течение одной сборки?

+0

Какая ошибка у вас? Это заявление импорта –

+0

У меня есть ошибка для отсутствующего плагина Android, например: import com.jvoegele.gradle.plugins.android.AndroidPlugin Я думаю, что что-то не так с моим build.gradle, но я не знаю что – Lando

ответ

1

Невозможно запустить задачу дважды в одной сборке. Вы можете создать две задачи с одинаковым типом и конфигурацией (обратите внимание, что несколько задач можно настроить за один раз) или (в крайнем случае) запустить две встроенные сборки (тип задачи GradleBuild), которые совместно используют сценарий сборки.

+0

Что значит «задачи с одним типом и конфигурацией»? Можете ли вы привести простой пример, пожалуйста? – Lando

+0

Объявите пять задач 'Copy' с тем же' destinationDir': '5.times {task" task $ it "(type: Copy) {destinationDir = file (" some/dir ")}}' –

+0

Да, спасибо, что отлично работает с этими задачами, но я не могу сделать это для задач с помощью плагина, например: 'android { .... }' так, как я могу использовать их снова? – Lando

Смежные вопросы