2015-04-16 14 views
6

jestem tylko kilka dni do korzystania Gradlenazywając Gradle „budować” zadanie w innym projekcie

W moim obecnym skrypcie build.gradle mam zadanie, które chciałbym zadzwonić zadanie budować w innym projekcie (tj. zdefiniowane w innym pliku build.gradle gdzie indziej) po każdym jego wykonaniu

Moje pytanie brzmi: jak mogę wywołać zadanie z innego projektu?

Chyba chcę zrobić coś takiego jak tasks.build.execute(), ale nie działa. Próbowałem tego:

commandLine "${rootDir}\\gradle", 'build', 'eclipse' 

przynajmniej wykonał kompozycję i zaćmienie dla mojego obecnego projektu, a nie główny projekt. Nadzieję, że moje pytanie jest jasne

+0

byłem w stanie odwołać się do zadania w główny projekt, ale kiedy to zrobię, rootProject.tasks.build.execute() to nie działa poprawnie – hamad32

+0

Co nie działa dokładnie? – Opal

Odpowiedz

12

Najpierw należy przeczytać to: http://gradle.org/docs/current/userguide/multi_project_builds.html

Jeśli masz multi-projekt budowy Potrzebny jest projekt główny, który zawiera settings.gradle plik z czymś takim:

include 'myproject1' 
include 'myproject2' 

Niż można po prostu uzależnić od jednego projektu do drugiego w ten sposób:

myproject1/gradle.build

task someOtherTask() << { 
    println 'Hello' 
} 

myproject2/gradle.build

task sometask(dependsOn: ':myproject1:someOtherTask') << { 
    //do something here 
} 

Lub jeśli chcesz wywołać zadanie:

project(':myproject1').tasks.build.execute() 

Wskazówka: Musisz zastosować wtyczki Java, aby budować zadanie dostępne.

+0

Po rozległych poszukiwaniach zarządzania zależnościami w produktach Gradle była to odpowiedź, która sprawiła, że ​​rzeczy działają dla mnie. Dzięki! –

+1

Świetna odpowiedź, zależyOn załatwił sprawę –

11

Ustaw ścieżkę buildfile itd .:

task buildSomethingElse(type: GradleBuild) { 
    buildFile = '../someOtherDirectory/build.gradle' 
    tasks = ['build'] 
} 

build.finalizedBy('buildsomethingElse') 

referencyjny: Gradle organizuje zbudować podręcznik logiki, pkt 59.5.

Można zastosować to do innego ant projektu, jak również, dodając plik build.gradle jeden wiersz w swoim projekcie mrówek, które po prostu zwraca mrówka, tak:

ant.importBuild 'build.xml' 
Powiązane problemy