2014-03-13 11 views
5

Wie kann ich Eltern definiert compile project Abhängigkeit auszuschließen?Gradle - Teilprojekte schließen Eltern definierte Projektabhängigkeit aus

Aufbau der Module ist wie folgt:

- build.gradle 
- settings.gradle 
- MAIN_MODULE_1 
    - build.gradle 
- MODULE1 
    - build.gradle 
- MODULE2 
    - build.gradle 
- MODULE3 
    - build.gradle 
- MODULE4 
    - build.gradle 

Und Abhängigkeitsmodell sein sollte:

- MODULE1 <- MAIN_MODULE_1 
- MODULE2 <- MAIN_MODULE_1 
- MODULE3 <- MAIN_MODULE_1 
- MODULE4 <- MAIN_MODULE_1 

Was bedeutet, mit

// build.gradle 
subprojects { 
    apply plugin: 'java' 
    dependencies { 
    compile project('MAIN_MODULE_1') 
    } 
} 

// settings.gradle 
include ':MAIN_MODULE_1' 
include ':MODULE1' 
include ':MODULE2' 
include ':MODULE3' 
include ':MODULE4' 

zirkuläre Abhängigkeit von MAIN_MODULE_1 auf sich selbst schaffen , was falsch ist.

und die Abhängigkeit in jedem Modul (der Gesamtzahl nicht 4 aber 120) scheint mir falsch.

Antwort

10

Sie können bedingt die Abhängigkeit gelten nur, wenn Sie nicht in Projekt sind MAIN_MODULE_1:

dependencies { 
    if (!project.name.equals("MAIN_MODULE_1")) { 
     compile project(':MAIN_MODULE_1') 
    } 
    } 

Die Antwort ist eine sauberere Lösung.

+0

Wow, es war wirklich nervig, aber es half. Danke –

13

Sie den Konfigurationsblock verwenden können:

project(':MAIN_MODULE_1') { 
    apply plugin: 'java' 
} 

configure(subprojects - project(':MAIN_MODULE_1')) { 
    apply plugin: 'java' 
    dependencies { 
    compile project('MAIN_MODULE_1') 
    } 
} 

Die Antwort wird aus dieser anderen Frage kommenden Gradle exclude plugin in main project for specific subproject(s)

+0

Klar, was dieser Code tut bitte? Das "-" wirft mich. Java Hintergrund. – user447607

+2

Ich denke, es ist eine arithmetische Operation und übersetzt "die Menge von Teilprojekten minus dem Teilprojekt' MAIN_MODULE_1' ". –

Verwandte Themen