Welchen Zweck hat der Ordner buildSrc von grdle?

9

Was ist der Hauptzweck der Verwendung einer buildSrc -Datei als oberste Ebene im Gegensatz zu einem typischen Java-Projektlayout (src / main / java)?

Wenn ich ein Layout von

habe %Vor%

oder

%Vor%

Was wäre der Unterschied (oder der Grund dafür)? Ist es in mehreren Modulprojekten nützlicher? Selbst für ein Multi-Modul-Projekt konnte ich nicht so etwas wie

machen %Vor%

Und dann haben Sie einfach eine build.gradle der obersten Ebene (auf der gleichen Ebene wie proj1 und proj2 ), die allgemeine Einstellungen für die Projekte definiert?

    
Jeff Storey 14.12.2012, 07:53
quelle

1 Antwort

23

buildSrc ist ein separates build , mit dem Aufgaben, Plugins oder andere Klassen erstellt werden können, die in Build-Skripts des Hauptbuilds verwendet werden sollen , aber müssen nicht über Builds verteilt werden. (*) Es wäre nicht möglich, solche Klassen als Teil des Haupt-Builds zu erstellen, da sie existieren müssen, bevor die Build-Skripte des Haupt-Builds überhaupt kompiliert / ausgewertet werden können. und Gradle kompiliert / wertet alle Erstellungsskripts aus, bevor sie funktionieren (Konfigurations- oder Ausführungsphase).

Verglichen mit dem Einfügen des gesamten Build-Codes in Build-Skripte bietet buildSrc Ihnen die Möglichkeit, Build-Code mehr wie regulären Code zu entwickeln, als Klassen, die Sie testen, in Ihre IDE importieren können usw. Es ist eine Möglichkeit, den Build zu erhalten Skripte einfach und DRY sogar für kompliziertere Builds.

buildSrc wird häufiger in Multiprojekt-Builds gesehen, einfach weil größere Builds ihre eigenen benutzerdefinierten Aufgaben und Plug-ins eher implementieren.

Mit der Zeit wird buildSrc zu einer allgemeineren Fähigkeit, mehrere abhängige Builds in einem einzigen Gradle-Aufruf auszuführen.

(*) Das Teilen von Klassen über Builds hinweg ist möglich, aber aufwendiger. Insbesondere müssen Sie die Klassen in einem Repository veröffentlichen, und aufwändige Builds müssen sie explizit von dort importieren, ähnlich wie beim Teilen von Produktionsbibliotheken zwischen Builds.

    
Peter Niederwieser 14.12.2012, 08:54
quelle

Tags und Links