2014-10-20 37 views
5

Jak mogę uruchomić inny skrypt gradle z gradle. Mam wiele skryptów gradle do uruchamiania testów pod katalogiem <root_project>/test. <root_project>/build.gradle jest wywoływany z nazwą pliku gradle testowego do uruchomienia. Na przykładJak uruchomić skrypt gradle od gradle

gradle run_test -PtestFile=foobar

ten powinien uruchomić <root_project>/test/foobar.gradle (domyślne zadania IT)

Co mam aktualnie robi powołuje project.exec w zadaniu run_test. To działa, ale teraz muszę przekazać właściwości projektu z procesu gradowania z uruchomieniem run_test do tego, który uruchamia foobar.gradle

Jak mogę to zrobić? Czy istnieje bardziej zintegrowany ze skalą sposób uruchamiania skryptu gradle od innego, przekazując wszystkie wymagane informacje do skryptu gradle podrzędnego?

Odpowiedz

4

zrobić coś podobnego, gdzie "konstruowania" zadania w jednym Gradle rąk off do " wykonuj "zadanie w innym pliku gradów w utworzonym przeze mnie katalogu (zwanym artefaktem) i przechodzi przez wszystkie właściwości projektu.

Oto odpowiedni kod dla przełączania:

def gradleTask = "yourTaskToEventuallyRun" 
def artefactBuild = project.tasks.create([name: "artefactBuild_$gradleTask", type: GradleBuild]) 
artefactBuild.buildFile = project.file("${artefactDir}/build.gradle") 
artefactBuild.tasks = [gradleTask] 

// inject all parameters passed to this build through to artefact build 
def artefactProjectProperties = artefactBuild.startParameter.projectProperties 
def currentProjectProperties = project.gradle.startParameter.projectProperties 
artefactProjectProperties << currentProjectProperties 
// you can add more here 
// artefactProjectProperties << [someKey: someValue] 

artefactBuild.execute() 
+0

Dzięki. To działa :) –

+0

@ SundeepGupta cieszę się, że mogę pomóc. –

1

Dość dziwne wymaganie. Czy możesz podać dodatkowe szczegóły? Może być inny, prostszy sposób na zrobienie tego.

Mimo to można to zrobić za pomocą Gradle Tooling API. Możesz znaleźć dokumentację API here, a najlepiej zacząć od ProjectConnection.

+0

Pozwól mi spróbować. –

+0

Działa, ale jest trochę skomplikowany niż inne rozwiązanie. –

+0

Jasne, cieszę się, że rozwiązałeś swój problem. – Opal

1

Jeśli chcesz określić inny Gradle skryptu, można użyć:

gradle --build-file anotherBuild.gradle taskName 

lub

gradle -b anotherBuild.gradle taskName 
Powiązane problemy