2013-06-11 15 views
8

Staram się zrozumieć, jeśli możliwe jest korzystanie z zadań innych projektów w Gradle. Powiedzmy ProjectB to projekt z src/main/Groovy zawierający com.MyTask, posiadający dominującą ProjectaZależność Gradle od projektu w BuildScripcie

W build.gradle w ProjectC, także mające rodzic Projecta:

buildscript { 
    dependencies{ 
     project(':ProjectB') 
    } 
} 

To wydaje się być prawda, ponieważ zawikłanie literówki w "projekcie (:" ProjectB ")" nie udaje się mocno. Niepowodzeniem jest także wprowadzenie tej linii:

import com.MyTask 

Czy odnośniki projektowe są nieważne w zamknięciu buildscript? Próbowałem również przenieść com.MyTask do buildSrc/src/main/groovy z taką samą skutecznością.

Odpowiedz

4

roztworu, który pracował dla mnie było, aby „com.MyTask” dostępne zarówno w configurationtime i źródeł. Projecta (rodzic) dostał ten dodany do sourceSets buildSrc/build.gradle za:

sourceSets{ 
    main{ 
     groovy{ 
      srcDir 'ProjectB/src/main/groovy' 
     } 
    } 
} 

Teraz ProjectC i wszystkie inne projekty mogą korzystać MyTask. W tym samym czasie jest dołączany do finalnego słoika w ProjectB.

Emisja została również omówiona dokładnie między między Adamem Murdoch, Luke Daley i Steve Ebersole: http://gradle.1045684.n5.nabble.com/buildSrc-as-a-regular-project-td5677255.html

Edit: To był mądrzejszy niż manipulować rodzic buildSrc projektu autonomicznym. W ten sposób IntelliJ jest szczęśliwy-go-lucky.

+0

"IntelliJ nie podobało mi się to "haha, nie, założę się, że nie zrobił. –

+0

Haha! Przepraszamy za zredagowanie odpowiedzi tak, jak skomentowałeś @ mike-rylander! – judoole

+0

Dzięki za zastanowienie się, jak sprawić, by IntelliJ był szczęśliwy. –

0

Z dokumentacji Gradle 15.4. Adding dependencies to a task:

Przykład 15.13. Dodawanie zależność zadania z innego projektu

build.gradle 

project('projectA') { 
    task taskX(dependsOn: ':projectB:taskY') << { 
     println 'taskX' 
    } 
} 

project('projectB') { 
    task taskY << { 
     println 'taskY' 
    } 
} 
+0

Dobra rozmowa! Ale mógłbym nie powiedzieć wystarczająco jasno problemu. To nie są zdefiniowane zadania, które chcę użyć, to Zadania utworzone w ścieżce klas. Na przykład eksportowanie ProjectC do mavenLocal() i importowanie go do ProjectB w buildscript działa dobrze. Następnie MyTask jest dostępny. – judoole

+0

Próbowałem również zdefiniować "MyTask" w ProjectC i zależało, że w ProjectB, ale nie byłem w stanie, jak "MyTask" jest w src/main/gradle, a nie w buildSrc/src/main/gradle. – judoole

+0

@ OleChristianLangfjæran patrzysz na ch 15.2? Czy próbowałeś ponownie 'tasks.getByPath ('MyTask')' –

Powiązane problemy