2014-12-01 5 views
5

Ich möchte in animalSniffer Plugin eine Aufgabe, die auf die Kompilierung aller Produktionsklassen (Java, Groovy, Scala) in allen SourceSets und der zweiten abhängen abhängig haben Zusammenstellung aller Testklassen in allen sourceSets (möglicherweise getrennt test und integrationTest).Wie auf alle * compile und * testCompile Tasks in Gradle

Ich würde nicht auf *classes Aufgaben abhängen mag als *classes Aufgaben animalSniffer Aufgaben abhängen sollte (die API Java-Version Inkompatibilitäten nach der Kompilierung erkennt und die Build stoppen kann).

Gibt es einen besseren Weg in Gradle zu erreichen, als zu überprüfen, ob eine Instanz von AbstractCompile Taskname mit "compileTest" beginnt?

Antwort

2

Sie können tasks.withType(AbstractCompile) verwenden, die alle Kompilieraufgaben für alle Quellgruppen (einschließlich Java, Groovy, Scala) zurückgibt. Sie können dann filtern, indem Sie alle Tasks mit test in ihnen entfernen, wie in der anderen Antwort vorgeschlagen.

für eine bestimmte Aufgabe auf alle diese abhängen, können Sie wie folgt vorgehen:

myTask.dependsOn tasks.withType(AbstractCompile).matching { 
    !it.name.toLowerCase().contains("test") 
} 
+0

danke für Ihre Antwort, aber wie ich in meinem ersten Satz erwähnt habe, muss ich unterscheiden ** Produktion ** und ** Test ** kompilieren Tests, um in meinen zwei verschiedenen Aufgaben zu verwenden. Deshalb war mein Vorschlag, zusätzlich zu 'AbstractCompile', auch den Task-Namen zu prüfen, aber ich würde eine elegantere Lösung bevorzugen. –

+0

kompilieren Tests -> Aufgaben kompilieren –

+0

Sorry, ich habe diesen Teil verpasst. Habe meine Antwort bearbeitet, um die Aufgaben zu filtern, um alle Aufgaben zu entfernen, die mit "test" beginnen. Ich hoffe, das hilft. –

1

Wenn Sie zwischen Produktion und Test kompilieren Aufgaben/Quelle-Sets unterscheiden müssen, zu prüfen, ob der Name test enthält (Fall (unempfindlich) ist die beste verfügbare Lösung.

+0

Danke Peter für die Klarstellung. –

Verwandte Themen