2016-10-18 5 views
0

Wir haben einen Multi-Projekt-Build mit einem Intra-Projekt Abhängigkeiten zwischen den 'eingeschlossenen' Projekten in den Einstellungen.gradle. Es gibt eine Reihe von Abhängigkeiten zwischen den verschiedenen Projekten, ausgedrückt als Projektabhängigkeiten, die in der mittleren Liste der Abhängigkeiten des Projekts enthalten sind.Gradle scheint Projektabhängigkeiten zu ignorieren

Während dieser Ansatz in mehreren anderen Multiprojekt-Builds funktioniert, werden in diesem speziellen Projekt die Projektabhängigkeiten nicht berücksichtigt, daher werden Subprojekte in der falschen Reihenfolge erstellt und der Build schlägt fehl.

Also, für Anfänger, wie diagnostizieren wir, was hier vor sich geht, um festzustellen, ob es ein Fehler ist?

Wir laufen: Gradle (Wrapper) Version: 3.1 Betriebssystem: Windows 8.1 6.3 amd64 JDK: Oracle 1.8.0_65


Also - wir schließlich festgestellt, dass das Problem war - Es gab Code in einem configurations.all-Block, der die usageVersion auf verschiedene Abhängigkeiten setzte. Wenn eine dieser Abhängigkeiten eine Projektabhängigkeit ist, ist das Projektabhängigkeitsstück unterbrochen.

+0

können Sie Ihre 'settings.gradle' und alle relevanten Konfigurationen in Ihrem' build.gradle' Dateien posten? – Adam

Antwort

0

Es ist schwer zu beantworten, ohne die relevanten Schnipsel von build.gradle zu sehen und auch einen Überblick darüber, wie sich die problematischen Projekte gegenseitig einschließen. Hier ein paar mögliche Kandidaten

Manchmal ist die Auswertung eines Projekts hängt von der Auswertung eines anderen, in diesen Fällen können Sie evaluationDependsOn

project(':projectA') { 
    evaluationDependsOn(':projectB') 
} 
project(':projectB') { 
    project(':projectA').tasks.create(...) 
} 

In den Fällen verwenden, in denen es einen zirkulären Verweis zwischen Projektabhängigkeiten ist könnte man der Lage sein, die Schleife zu durchbrechen, indem das Hinzufügen zusätzlicher Konfiguration (en)

project(':projectA') { 
    configurations { 
     base 
     compile.extendsFrom base 
    } 
    dependencies { 
     base 'aaa:bbb:1.0' 
     compile project(path: ':projectB', configuration: 'base') 
    } 
} 
project(':projectB') { 
    configurations { 
     base 
     compile.extendsFrom base 
    } 
    dependencies { 
     base 'ccc:ddd:1.0' 
     compile project(path: ':projectA', configuration: 'base') 
    } 
} 
Verwandte Themen