2012-12-11 16 views
7

Czy możliwe jest dziedziczenie definicji jednego zadania od drugiego? Co chcę zrobić, to stworzyć kilka profili testowych, więc musiałbym domyślnego testu -Dziedziczenie definicji zadania spadkowego

test { 

    include 'com/something/something/**' 
    exclude 'com/something/else/**' 

    maxParallelForks 5 

    testLogging{ 
     exceptionFormat "full" 
     showStackTraces = false 
    } 

    jvmArgs '-Xms128m', '-Xmx512m', '-XX:MaxPermSize=128m' 
} 

i jakiś inny test z nadpisane „include” lub „maxParallelForks” części itp

Czy jest możliwe bez tworzenie nowej klasy zadań?

Odpowiedz

10

Można skonfigurować wszystkie te zadania za jednym razem, pod warunkiem, że są tego samego typu, stosując następujące konstrukt:

tasks.withType(Test) { 
    include 'com/something/something/** 
    ... 
} 

ta konfiguruje wszystkie zadania typu „test” za jednym zamachem. Następnie możesz przesłonić konfiguracje.

Jeśli nie chcesz konfigurować wszystkich zadań lub niektóre z nich mają inny typ, możesz je wyliczyć tak, jak w poniższym fragmencie.

["test","anotherTestTask"].each { name -> 
    task "$name" { 
    include ... 
    } 
} 

Pamiętaj, masz pełną moc skryptów Groovy, więc istnieje wiele opcji tutaj ...

+1

Dzięki, myślę, że pójdę z pierwszego konstruktu „tasks.withType (test) *. configure ... ". Wciąż jestem ciekawy, jeśli istnieje sposób na zbudowanie jakiegoś drzewa dziedziczenia - aby mieć jakąś globalną definicję testu, potem jakiś testSuite1 rozszerzający globalny test, potem jakiś testSuite2 rozszerzający testSuite2, ... Wiem, że są pewne "hacki" jak ja może to osiągnąć, choć nadal chciałbym mieć wsparcie dla DSL. – mawek

+1

Składnię można uprościć do 'tasks.withType (Test) {...}' i 'task" $ t "{...}". Wierzymy, że jawne * zasady konfiguracji * są lepszym podejściem niż mechanizm dziedziczenia z całą jego ukrytą semantyką. Dlatego nie mamy planów, aby je dodać. –

+0

Dzięki za uproszczenia Peter :) –