2015-05-28 3 views
0

У меня, похоже, проблема с курицей/яйцом. У меня есть тестовая задача, которую Gradle определяет с помощью плагина Java. Я установил категории JUnit для запуска с использованием свойства. Моя команда проявила интерес к задаче, которая будет запускать задачи в определенной категории, вместо того, чтобы использовать -P для установки свойства в командной строке.Настройка задачи «Грейдл» на основе выполняемой задачи

Я не могу придумать способ снять это, так как новая задача должна была бы сконфигурировать задание test, только если оно выполнено. Поскольку категории для запуска должны быть входным параметром для тестовой задачи, чтобы удостовериться, что функции проверки UP-TO-DATE правильны, их необходимо установить на этапе конфигурации и не может дождаться фазы выполнения.

Кто-нибудь знает, как сделать установку, подобную этой работе? Может быть, я подхожу к нему с неправильного угла.

Edit 1

Текущий build.gradle

apply plugin: 'java' 

def defaultCategory = 'checkin' 

test { 
    def category = (project.hasProperty('category') ? project['category'] : defaultCategory) 
    inputs.property('category', category) 

    useJUnit() 
    options { 
     includeCategories category 
    } 
} 

То, что я хотел бы, но не работает:

apply plugin: 'java' 

def defaultCategory = 'checkin' 

test { 
    def category = (project.hasProperty('category') ? project['category'] : defaultCategory) 
    inputs.property('category', category) 

    useJUnit() 
    options { 
     includeCategories category 
    } 
} 

task nightly(dependsOn: 'build') { 
    defaultCategory = 'nightly' 
} 

task weekly(dependsOn: 'build') { 
    defaultCategory = 'weekly' 
} 

Поскольку обе задачи настроены независимо будут ли они запущены, они станут бесполезными. Я не могу отложить настройку значения по умолчанию для категории до тех пор, пока эта фаза не будет выполнена, потому что это значение необходимо для настройки входов задачи задачи test и потому что для этого требуется значение для выполнения задачи test, которая выполняется до задачи build.

+0

Могли бы вы предоставить пример сценария, показывающий, где у вас есть проблемы? – Opal

ответ

4

Я не знаю, если я бы назвал это решение элегантно, но она доказала свою эффективность:

task nightly(dependsOn: 'build') 

test { 
    useJUnit() 

    gradle.taskGraph.whenReady { 
     if (gradle.taskGraph.hasTask(":${project.name}:nightly")) { 
      options { 
       includeCategories 'nightly' 
      } 
     } 
    } 
} 
Смежные вопросы