Как да стартирам задача, създадена от плъгин в gradle

Написах приставка за gradle, която добавя персонализирана задача, наречена generateTestDocs, която зависи от задачата groovydoc, която сама по себе си е създадена от приставката groovy.

//MyPlugin.groovy
@Override
void apply(Project project) {
    project.apply(plugin: 'groovy')
    project.task(type: GenerateTestDocsTask, dependsOn: ':groovydoc', 'generateTestDocs')
}

project.tasks.groovydoc.doFirst {
    println "I should see this message but I don't"
}

Опитвам се да тествам този плъгин, като изпълнявам задачата generateTestDocs

@Test
void testRunGenerateTestDocs() {
    Project project = ProjectBuilder.builder().build()
    project.apply(plugin: 'my.gradle.plugin')
    project.tasks.generateTestDocs.actions*.execute(project.tasks.generateTestDocs)
}

За последния ред в моя тест бих искал вместо това просто да кажа project.task.generateTestDocs.execute() и да го накарам да изпълни задачата с всички нейни зависимости, но това изглежда не работи. Документацията за писане на приставки за gradle показва само твърдения като assertTrue(project.tasks.hello instanceof GreetingTask), което показва, че задачата е добавена към проекта, но не показва как да се изпълни тази задача.


person Marty Neal    schedule 08.12.2014    source източник
comment
възможен дубликат на Програмно извикване на графика на задача от gradle в единица тест   -  person Marty Neal    schedule 09.12.2014
comment
Няма значение, намерих отговора си в този въпрос: stackoverflow.com/questions/16264966/   -  person Marty Neal    schedule 09.12.2014


Отговори (2)


ProjectBuilder е предназначен само за модулни тестове. За да стартирате компилация като част от тест, ще трябва да използвате приложния програмен интерфейс (API) за инструменти на Gradle или приставка на трета страна, като например nebula-test (който се основава на API за инструменти).

person Peter Niederwieser    schedule 08.12.2014

Изправих се пред същия въпрос, реших това чрез add

приложете плъгин: CustomPluginName

в текущия gradle.build:

apply plugin: 'groovy'
...
// in this case Plugin name is MyPlugin
apply plugin: MyPlugin 
person Mikey Yang    schedule 03.09.2017