Cribble Crabble Gradle: Magie automatisch aufbauen

Entwickler erleichtern den Menschen das Leben, während Gradle es Entwicklern erleichtert. Wenn Sie auf Android schreiben, ist dieser Artikel für Sie. Lesen Sie, was für ein Biest dieser Gradle ist (Spoiler: Er ist ein Elefant) und wie man mit ihm arbeitet.


Gradle ist ein automatisches Build-System, das die Arbeit mit Java vereinfacht. Mithilfe von (bedingt) standardisierten Tools können Entwickler das richtige Produkt erstellen, ohne seine Einzigartigkeit zu verlieren. Schließlich ist die Arbeit mit Gradle nicht nur eine Auswahl einer Vorlage. Aber das Wichtigste zuerst.


Bild


Wo kann ich Gradle herunterladen?


Sie können Gradle auf der offiziellen Website herunterladen . Wir empfehlen, alles manuell herunterzuladen und zu installieren (damit das Leben nicht wie eine Himbeere wirkt). Anweisungen und alle erforderlichen Links finden Sie unter Gradle installieren> Manuell installieren . Wir empfehlen übrigens, alles zu lesen. Das ist alles Im Ernst.


Auf dieser Seite müssen Sie die Systemversion auswählen und auf "Nur Binär" klicken. Dann - entpacken Sie das Zip-Archiv und legen Sie die Umgebungsvariable PATH wie in der Anleitung beschrieben fest. Wenn nach der Installation alles korrekt ausgeführt wurde, sollte der Befehl gradle -v die Version des ausgewählten Systems anzeigen.


Manchmal stellt sich heraus, dass das System Gradle während der Definition an einem unerwarteten Ort findet. Unter Windows wird dies wie folgt gelöst:
für% i in (gradle.bat) echo . % ~ $ PATH: i


Wie man mit Gradle arbeitet


Gradle ist nicht plattformspezifisch. Darüber hinaus verwendet das System verschiedene Programmiersprachen. Am beliebtesten sind Groovy DSL und Kotlin (aber Sie können auch über andere schreiben). Die erste Option wird im Artikel verwendet, da dies die Standardsprache für die Aufgabenbeschreibung in Gradle ist.


Bevor Sie beginnen, beachten Sie erneut die Begriffe "Aufgabe" und "Plug-In". Schließlich bauen alle Arbeiten mit dem System darauf auf. Plugins bieten und erstellen Aufgaben. Aufgaben sind die Aktionen, die ausgeführt werden müssen. Alles ist sehr einfach.


Weitere Informationen hierzu finden Sie in den Anweisungen für die Plug-Ins: JavaCompile (Hinzufügen neuer Aufgaben), SourceSet (Hinzufügen neuer Domänenobjekte ). Plugins funktionieren auch mit Konventionen und erweitern Objekte. Mit dem Plugin können Sie beispielsweise neue DSL-Elemente hinzufügen und / oder konfigurieren.


Das Set "Core Plugins" wird automatisch erstellt, wenn Sie Gradle installieren. In den ersten Phasen wird empfohlen, die Kategorie "Utility" zu verwenden, nämlich das Plugin "Build Init Plugin". Es bietet Aufgaben zum Initialisieren eines Projekts im System. Sie können den Projekttyp aus der Liste auf der Site auswählen.


Lass es Java-Anwendung sein .
Aufgabe: gradle init --type java-application


Danach werden neue Dateien im Ordner angezeigt. Unter ihnen:


  • Der Gradle-Ordner (Aufmerksamkeit, nicht .gradle) und die gradlew.bat-Datei sind Wrapper, Wrapper.
  • build.gradle-Datei - Ein Skript, in dem Bibliotheken, Frameworks, Plugins und Aufgaben eines bestimmten Projekts angegeben werden.

In der letzten Datei wird der Plugin-Bereich angezeigt. Mit diesem Plugin sind bereits Aufgaben verbunden. Ihre Liste kann mit dem Befehl gradleasks angezeigt werden.


Die Aufgaben


In Blöcken nach ihren Funktionen dargestellt. Jeder erhält eine kurze Beschreibung. Das Verstehen erfordert Grundkenntnisse in Englisch. Wenn Sie nicht zu dieser Gruppe gehören, wird jeder Übersetzer dies tun. In build.gradle gibt es keine komplexen Sprachkonstrukte.


Nachdem Sie eine Aufgabe ausgewählt und erfolgreich abgeschlossen haben, wird unten die grüne Aufschrift "BUILD SUCCESSFUL" angezeigt. Dies bedeutet, dass (Sie haben Glück) alles reibungslos verlief. Ebenfalls am unteren Rand des Systems wird ein kurzer Bericht angezeigt.


Wenn der Status "ausgeführt" ist, ist die Aufgabe wirklich abgeschlossen. Wenn "aktuell" - nein. Dies bedeutet nicht, dass ein Fehler aufgetreten ist. Im Falle eines solchen Status erfordert die Aufgabe im Prinzip keine Lösung, d. H. Ihr Objekt ist bereits auf dem neuesten Stand.


Dies geschah, weil Gradle automatisch "Aktuelle Überprüfungen " generierte - ein inkrementeller Build, dessen Zweck darin besteht, das System zu optimieren. Daher werden Aufgaben, die bereits abgeschlossen sind oder keine Maßnahmen erfordern, nicht ausgearbeitet.


Sie können diesen Build deaktivieren. Manuell. Dazu müssen Sie die Aufgabe mit dem Flag --rerun -asks abschließen. Wenn alles richtig gemacht wurde, ändert sich der Status aller Aufgaben in "ausgeführt".


Mit Gradle können Sie auch Protokolle auf verschiedenen Ebenen anzeigen. Mit dem Befehl gradle run -i können Sie beispielsweise Informationsmeldungen zum Systembetrieb lesen, mit dem Befehl run -q wird der Stummschaltungsmodus aktiviert, mit run -d werden alle Protokollmeldungen usw. angezeigt. Eine vollständige Liste der Protokolle und zusätzliche Informationen zum Protokollierungssystem finden Sie hier .


Abhängigkeiten


Abhängigkeitsmanagement - Gibt die Bibliotheken oder Frameworks an, die das Projekt benötigt. Gradle muss diese Abhängigkeiten irgendwann einschließen, um die Anwendung am Ende korrekt (oder allgemein) zu erstellen. Der Befehl gradle init für die Java-Anwendung im Build-Skript ruft automatisch Informationen zu zwei Konfigurationen auf.


Die Implementierung ist für die Transitivität verantwortlich: Ihre Abhängigkeiten sind für Benutzer unsichtbar. TestImplementation erweitert die vorherige Konfiguration. Sie arbeiten also zusammen.


Lesen Sie das Kapitel " Verwalten von Abhängigkeitskonfigurationen " im offiziellen Handbuch, um Abhängigkeiten besser zu verstehen und wie Sie damit arbeiten. Übrigens erklärt die " API- und Implementierungstrennung " ausführlich die API und Implementierung sowie den Unterschied zwischen ihnen.


Wenn Sie die Abhängigkeit in das endgültige Artefakt aufnehmen müssen, müssen Sie alle für das Manifest der JAR-Datei erforderlichen Informationen in den Einstellungen der JAR-Task angeben. Wie man es richtig macht, sehen Sie zum Beispiel hier .


Als nächstes müssen Sie die Abhängigkeiten in das JAR aufnehmen. Dies ist für die Kompilierung erforderlich.
Zu kompliziert? Verwenden Sie das " Gradle Shadow Plugin ".


Der Befehl gradle --console plain dependencies zeigt eine Liste aller Konfigurationen und ihrer Abhängigkeiten in einer Liste an. Das System bietet Entwicklern auch einen Filter, der Abhängigkeiten von der Liste ausschließt (gradle - Konsole einfache Abhängigkeiten | find "-") - einige sind bequemer.


Die häufigsten Arten von Abhängigkeiten:


  • extern - aus externen Repositories geladen;
  • Design - abhängig vom Modul in einem bestimmten Projekt;
  • Datei - sind als JAR- oder AAR-Archive verbunden.

Welche davon verwendet werden soll, entscheidet der Entwickler.
Für Java ist im Abhängigkeitsmanagement alles genau definiert.


Leben hackt


Trotz der Tatsache, dass Gradle ein beliebtes und relevantes System der automatischen Montage ist, haben viele Menschen Probleme damit. Hier sind einige Vorschläge, die einem Android-Entwickler das Leben erleichtern können:


  1. Verwenden Sie die Konsole. Das Auffinden von Befehlen ist manchmal problematisch. Wenn Sie build.gradle ändern, kann das System abstürzen oder das Projekt im Allgemeinen neu laden. Experten empfehlen daher, Gradle direkt von der Konsole aus anzurufen.

    Vrapper geht normalerweise mit dem Projekt. Auf Linux und MacOS kann direkt zugegriffen werden. Rufen Sie unter Windows eine Bat-Datei anstelle eines Wrappers auf.


  2. Gradle speichert den Cache 1 Tag lang. Dies kann neu konfiguriert werden. Sie müssen den Code bearbeiten:


    // build.gradle configurations.all { resolutionStrategy.cacheChangingModulesFor -  , 'hours' resolutionStrategy.cacheDynamicVersionsFor -  , 'minutes' } 

  3. - –refresh-dependencies - Ein nützlicher Befehl, mit dem alle Abhängigkeiten in Gradle aktualisiert werden. Es kann nützlich sein, wenn einige Daten im Cache beschädigt sind, wie es überprüft. Es ist praktisch zu verwenden, wenn die Cache-Daten beschädigt sind, da sie überprüft und aktualisiert werden (falls abweichend).


  4. Verwenden Sie CI (Continuous Integration), wenn Sie mit einem automatischen Build-System arbeiten. Lassen Sie Unit-Tests für alle Commits laufen. Experten empfehlen außerdem Tests von Anschlusseinheiten. Dies kann in Android Studio erfolgen.

    Diese Kombination erkennt Fehler früher. Und obwohl dies den Startvorgang verlangsamen wird, kann sich der Entwickler in Zukunft entspannen. Also Life Hack für die Zukunft.


  5. Versuchen Sie es erneut. Beängstigend (Auch wir) Tatsächlich muss die Synchronisation nicht immer sofort neu gestartet werden. Zunächst empfehlen Experten, das gesamte System zu überprüfen. Verwenden Sie beispielsweise einen einfachen Befehl, um zu verstehen, wie hoch die Erfolgschancen für die nächste Synchronisierung sind.


  6. Richten Sie Ihre IntelliJ IDEA-Entwicklungsumgebung mit Gradle ein. Dies optimiert den Arbeitsprozess und verwendet die magische Liste.


  7. Tipp für diejenigen, die mit Gradle über die Befehlszeile von Android Studio arbeiten. Überprüfen Sie, ob der Fehler "Beim Starten eines Gradle-Daemons konnte 1 nicht kompatibel nicht wiederverwendet werden" (# 68374709) angezeigt wird. Dies ist eine Geißel eines Systems, das Entwickler noch nicht repariert haben.



Eines der Hauptprobleme von Gradle ist "Gradle Build fehlgeschlagen". Wir können auf unnötige Worte verzichten, wenn Sie dies bereits wissen. Wenn nicht, viel Glück.


Bild


Das Hauptproblem von Gradle ist jedoch anders. Die Zeit, die das System zum Aufbau benötigt, ist in Fachkreisen seit langem eine (sehr traurige) Legende. Es ist unmöglich, die Arbeit zu beschleunigen, zumindest nicht wesentlich.


Also musst du trotzdem warten.


Sie können zum Beispiel irgendwo in den Weltraum fliegen, wie in Interstellar.


Bild


Fazit


Gradle ist trotz aller Nachteile eine gute Lösung. Durch die automatische Montage sparen Sie Zeit und Energie (egal wie ironisch es nach dem vorherigen Absatz klingt). Und auch - um Ihre Anwendung sauberer zu machen. Das System wird jeden Fehler bemerken und es nicht zulassen, die Arbeit zu beenden, bis sie behoben ist (um jeden Preis).


Source: https://habr.com/ru/post/de473642/


All Articles