2016-10-27 5 views
1

Zunächst einmal, ich bin ein totaler Noob mit Gradle und Groovy. :-)Wie mehrere Dateisysteme in einem einzigen Grad zu erstellen?

Ich versuche ein vorhandenes Projekt von einem ant-basierten Build auf Gradle zu portieren. Das Problem, das ich habe, ist, dass mein Quellcode in zwei verschiedenen Dateisystemen gespeichert ist (beide git Repos). Ich habe es geschafft, dass die Gradle-Subprojektkonfiguration für Module funktioniert, die sich im selben Dateisystem befinden, aber ich kann nicht scheinen, Teilprojekte über die zwei verschiedenen Dateisysteme zu verbinden. Ich benötige Projekte in Dateisystem 'A' (meine Anwendung Repo), um von Projekten im Dateisystem 'B' (meine Bibliothek Repo) abhängig zu sein.

Gibt es eine Möglichkeit, Gradle dazu zu bringen, Abhängigkeiten über Dateisystemgrenzen hinweg zu handhaben?

Jede Hilfe wäre sehr geschätzt ...

Antwort

1

Wenn Sie Dateisystem sagen, ich bin zu raten Sie bedeuten, dass sie in zwei verschiedenen Ordnern sind geprüft einmal aus.

ist es 2 Möglichkeiten, zu erreichen, was Sie wollen:

One ist Projekt B zu bauen und die Gläser in einen ‚Repository‘ das Projekt A hat Zugang zu veröffentlichen. Dies erreiche ich durch die Gläser Kopieren von ProjectB/build/libs zu einem projectA/lib Ordner und fügt hinzu, dass lib Ordner als Repository in der Build-Datei des Projekts A wie folgt:

repositories { 
    flatDir { 
     dirs 'lib' 
    } 
} 

Es ist ein wenig manuelle, aber es tut der Trick.

Die andere Möglichkeit ist die Verwendung von Gradle's neuer Composite Build-Funktion. Sie können Projekt A so konfigurieren, dass Projekt B eingeschlossen wird. Dadurch wird das manuelle Kopieren von Gläsern vermieden. Ich habe diesen Ansatz nicht selbst benutzt, weil er sehr neu ist, also kann ich nicht dafür bürgen, wie gut er funktioniert.

+0

Ich habe versucht, das Composite Build-Zeug zu verwenden, aber es scheint nur für Teilprojekte zu funktionieren, die in einem gemeinsamen Verzeichnis verwurzelt sind. In meinem Fall habe ich zwei verschiedene Verzeichnis-Wurzeln (eine für meine App und eine für meinen Bibliotheks-Code). Was ich nicht verstehe ist warum die Unterscheidung? Warum kann ich Gradle nicht sagen, dass ich ein Projekt in meiner Bibliothek habe, von dem meine Bewerbung abhängt? – Steve

+0

Hallo Steve. Ich bin mir ziemlich sicher, dass Sie einen Build aus einem beliebigen Verzeichnis hinzufügen können. Sind Sie sicher, dass Sie nicht zwischen einem Composite Build und einem Multiprojekt Build verwirrt werden? Können Sie den Inhalt Ihrer Builddateien oder die von Ihnen verwendeten Befehlszeilenargumente einfügen? –

+0

Ich denke, du hast recht, dass ich die zwei verschiedenen Schemata vermische. Ich werde versuchen, einen genaueren Blick auf den Composite Build-Kram zu werfen und zu sehen, was passiert. Eine Sache, die mir aufgefallen ist, dass dies für mich nicht funktioniert, ist, dass die Dokumente angeben, dass es keine Unterstützung für Composite Build in IntelliJ IDEA gibt Das ist die IDE, mit der wir arbeiten. – Steve

Verwandte Themen