gradle vs maven maven plugins
In diesem Tutorial werden die Unterschiede zwischen Gradle und Maven erläutert. Sie erfahren auch mehr über verschiedene Maven-Plugins und -Konfigurationen:
Gradle ist wie Maven ein Automatisierungstool, das von Java-Entwicklern für einen Build verwendet wird. Gradle ist ein Open-Source-Tool und verwendet eine domänenspezifische Sprache, die in Groovy entwickelt wurde.
=> Lesen Sie hier den Perfect Maven Training Guide.
Was du lernen wirst:
Gradle gegen Maven
Die wichtigsten Unterschiede zwischen Gradle und Maven sind nachstehend tabellarisch aufgeführt:
Gradle | Maven |
---|---|
In Bezug auf die Leistung ist Gradle besser, da es sich nur um die aktuelle laufende Aufgabe handelt und nicht um die bereitgestellte Eingabe oder Ausgabe. | Maven verwendet die vorherigen Build-Artefakte oder den Cache nicht zum Erstellen des Projekts, sodass die zum Generieren eines neuen Projekts erforderliche Zeit länger ist. |
Es ist ein Automatisierungs-Build-System, das in Groovy entwickelt wurde | Es ist ein Build- und Projektmanagement-Tool. |
Gradle wird nicht von einer XML-Datei für die Projekterstellung gesteuert, sondern verwendet die domänenspezifische Sprache Groovy. Die Projektinformationen werden im Gradle-Tool gespeichert. | Maven wird von einer XML-Datei gesteuert, die Informationen zu Abhängigkeiten, Plugins und Profilen usw. enthält. |
Gradle arbeitet inkrementell und ermöglicht eine schnellere Fertigstellung des Builds. | Maven verfolgt keinen inkrementellen Ansatz und ist in Bezug auf die Build-Timings langsamer als Gradle. |
Gradle-Skript ist einfach, nicht langwierig und kann leicht verstanden werden. | Maven hat die XML-Datei, die beschreibend, langwierig und nicht leicht zu verstehen ist. |
Gradle kann einfach angepasst werden, da es viele Flexibilität hinsichtlich einer großen Anzahl von Optionen bietet, die im Tool mit IDE-Unterstützung verfügbar sind. | Die Anpassung von Maven ist nicht einfach und manchmal nicht möglich, da es keine IDE-Unterstützung gibt. |
Ziel eines Gradle-Tools ist es, neue Funktionen im Projekt zu haben. | Das Ziel eines Maven-Tools ist es, ein Projekt in einer festgelegten Zeit abzuschließen. |
In Gradle ist die Java-Kompilierung kein erforderlicher Schritt. | In Maven ist die Kompilierung ein erforderlicher Schritt. |
Gradle ist ein vergleichsweise modernes Tool und seine Benutzer sind in der Anzahl begrenzt. | Maven ist ein bekanntes Tool und bei Java-Entwicklern beliebt. |
Zahlreiche Abhängigkeiten für das Projekt können in Gradle ohne Verwendung von XML hinzugefügt werden. | Dem Projekt können zahlreiche Abhängigkeiten hinzugefügt werden, indem sie zur XML-Datei (pom) hinzugefügt werden. Dadurch ist es komplexer und schwieriger zu verwalten als Gradle. |
Die Datei Build.gradle enthält Elemente wie group, baseName und version. | Die Datei Pom.xml enthält die Elemente wie und. |
Einige weitere Unterschiede zwischen Maven und Gradle
Gradle besteht aus einer Gruppe von Aufgaben, die ausgeführt werden müssen. Während Maven ein konstantes und präzises Phasenmodell hat. Maven-Ziele sind mit den Projektphasen verknüpft, und jedes Ziel ähnelt den Gradle-Aufgaben.
Performance
In Bezug auf die Leistung können sowohl Gradle als auch Maven mehrere Builds auf verschiedenen Modulen parallel ausführen.
Gradle verfolgt jedoch einen inkrementellen Build-Ansatz und überprüft, ob die Aufgaben geändert wurden oder nicht, und behandelt nur die Dateien, die aktualisiert werden.
Gradle bietet aufgrund der unten aufgeführten Funktionen eine bessere Leistung:
- Java-Klassenkompilierung inkrementell.
- Wiederverwenden der Build-Artefakte anderer Gradle-Builds mit ähnlichen Eingaben.
- Mehr Verwendung von APIs.
- Schnellere Kompilierung mit Hilfe des Compiler-Daemons.
Durch das Build-Cache-Management ist Gradle viel schneller als Maven.
Flexibilität
Gradle wird von Google als Build-Tool für Android verwendet, da es so konzipiert ist, dass es mit den grundlegendsten Methoden erweitert werden kann. Das Gradle-Modell kann für die Entwicklung von C oder C ++ verwendet und auf jede andere Umgebung erweitert werden.
Maven kann nicht einfach angepasst werden und ist oft nicht realisierbar. Dies erleichtert das Verständnis von Maven-Builds, wenn wir uns nicht mit komplexen oder exklusiven Anforderungen befassen müssen. Gradle kann jedoch leicht für die Verwendung angepasst werden.
Gradle bietet eine interessante interaktive Web-Benutzeroberfläche zum Codieren, Debuggen und Erstellen von Optimierungsaufgaben im Build Scan. Es enthält wichtige Informationen zu Trends, Verlauf und anderen Parametern des Builds.
Abhängigkeitsmanagement
Gradle hat eine bessere Implementierung von APIs und Abhängigkeiten als Maven. Außerdem ermöglicht es übereinstimmende Caches. Dies bedeutet, dass mehrere Projekte den gemeinsamen Cache verwenden können, ohne sich gegenseitig zu überschreiben. Gradle verfügt über eine Prüfsumme und synchronisiert die Caches zusammen mit den Repositorys.
Es hat einige der Abhängigkeitsverwaltungsmerkmale wie:
- Substitutionsregeln für kompatible Bibliotheken.
- Ersetzt durch Regeln.
- Stellen Sie die Abhängigkeiten des Projekts mit externen wieder her und umgekehrt.
Sowohl Gradle als auch Maven haben dynamische und transitive Abhängigkeiten. Maven verfügt über die lokalen, zentralen und Remote-Repositorys, während Gradle über JCenter verfügt. Außerdem gibt es benutzerdefinierte Repositorys innerhalb der Organisationen.
Codierungsbeispiele für Gradle und Maven
2.0.0 com.softwareTest Java-builds jar 2.0 j unit junit 2.10 org.apache.maven.plugins maven-surefire-plugin 2.2.1
Um ein Maven-Ziel auszuführen, das eine JAR-Datei generiert, wird der folgende Maven-Befehl verwendet:
Befehlszeilenargumente in Shell-Skriptbeispielen
mvn package
Daher sehen wir, dass die Datei pom.xml beschreibend ist und Maven-Projekte mit mehreren Aufgaben, Konfigurationen und Abhängigkeiten eine lange XML-Datei haben.
Der entsprechende build.gradle-Code, der das gleiche Ergebnis erzielt, ist unten angegeben:
apply plugin:'java' apply plugin:'maven' group = 'com.softwareTest' version ='2.0' repositories { mavenCentral() } dependencies { testCompile group:'junit', name:'junit', version:'2.10' }
Wir sehen also, dass das Gradle-Skript im Vergleich zu Maven kürzer ist. Der folgende Befehl wird verwendet, um eine Gruppe von Aufgaben auszuführen.
gradle tasks –all
Wir sehen, dass Gradle fähiger ist als Maven. Es kann jedoch vorkommen, dass wir nicht alle diese zusätzlichen Funktionen von Gradle benötigen. Daher eignet sich Maven eher für kleine Projekte, während Gradle hauptsächlich für größere Projekte verwendet wird.
Grundlegende Befehle von Gradle gegen Maven
In der folgenden Tabelle sind einige grundlegende Befehle von Gradle vs Maven aufgeführt:
Zweck | Gradle-Befehl | Maven Befehl |
---|---|---|
todsicher | Junit-Tests werden in einem isolierten Klassenladeprogramm ausgeführt. | |
WAR / EAR / JAR generieren | Gradle montieren | MVN-Paket |
Ausführen und kompilieren | Gradle-Test | MVN-Test |
Verzeichnis des Builds löschen | gradle sauber | mvn sauber |
In Eclipse integrieren | Gradle Eclipse | mvn eclipse: eclipse |
Zum Installieren | Gradle installieren | mvn installieren |
Um die Version zu bekommen | Gradle-Version | mvn -version |
Wir können Gradle in Maven konvertieren und umgekehrt.
Wir können die folgenden Schritte ausführen, um Maven in Gradle zu ändern:
# 1) Navigieren Sie zum Maven-Projektordner (Speicherort der Datei pom.xml).
#zwei) Führen Sie den Befehl aus gradle init.
Dies führt dazu, dass gleichzeitig ein Gradle-Build generiert wird settings.gradle Datei und build.gradle Dateien werden erstellt.
Um Gradle in Maven zu ändern, gehen Sie wie folgt vor:
# 1) build.gradle Datei sollte das Maven-Plugin haben.
# 2) build.gradle Die Datei sollte den folgenden Codeblock haben:
apply plugin: 'java' apply plugin: 'maven' group = 'com.test' version = '0.4' dependencies { compile 'commons-lang:commons-lang:2.3' }
#3) Dann ausführen Gradle installieren.
Dies führt dazu, dass pom-default.xml-Dateien im pom-Unterordner generiert werden.
Konfiguration von Maven
Maven-Konfigurationsinformationen für die Verwendung und erstellte Projekte verbleiben an folgenden Stellen:
- Umgebungsvariable MAVEN_OPTs : Es enthält die Informationen, die zum Starten der Java Virtual Machine (JVM) erforderlich sind, und bietet zusätzliche Funktionen, z. B. können die Speichereinstellungen der JVM auf den Wert -Xms256m -Xmx512m festgelegt werden.
- Settings.xml Datei: Diese Datei befindet sich im Verzeichnis USER_HOME / .m2. Diese Datei kümmert sich um die meisten Konfigurationen, die in allen in Maven erstellten Projekten verwendet werden.
- .mvn Ordner: Dieser Ordner findet einen Platz auf der obersten Ebene des Projektverzeichnisses. Die Dateien jvm.config, maven.config und extensions.xml enthalten Informationen zur projektspezifischen Konfiguration.
- .mvn / extension.xml Datei
- .mvn / maven.config Datei
- .mvn / jvm.config Datei
Die Konfiguration von Maven erfolgt auf den unten aufgeführten Ebenen:
- Installation: Dies wird während der Installation von Maven berücksichtigt.
- Projekt: Dies ist die statische Datei, die in der Datei pom.xml verwaltet wird.
- Nutzer: Dies ist für einen bestimmten Benutzer konfiguriert.
Die Projektkonfiguration wird auf das gesamte Projekt angewendet, während die anderen Konfigurationen (Installation und Benutzer) auf die Umgebung angewendet werden, in der wir arbeiten. Die Installations- und Benutzerkonfigurationen können nicht als Teil der freigegebenen Projektdaten hinzugefügt werden.
Lokale Repository-Konfiguration
Der lokale Repository-Speicherort kann im Rahmen der Konfiguration des Benutzers geändert werden. Standardmäßig ist der Speicherort das Verzeichnis .m2. Dies wird durch den folgenden XML-Code erreicht.
path to the directory
Proxy-Konfiguration
Die Proxy-Konfiguration kann in den Einstellungen beibehalten werden.
Konfiguration der parallelen Artefaktauflösung
Maven lädt maximal 5 Artefakte aus verschiedenen Gruppen gleichzeitig herunter.
Um zwei Artefakte herunterzuladen, müssen Sie den folgenden Befehl angeben:
mvn -Dmaven.artifact.threads = 2 überprüfen
Bereitstellung und Sicherheitskonfiguration
In diesem Abschnitt werden die Repositorys beschrieben, die in einem bestimmten Projekt bereitgestellt werden sollen. Informationen wie Benutzername, Passwort und andere Sicherheitsparameter können nicht in dieses Projekt eingefügt werden. Um diese Informationen bereitzustellen, müssen wir sie der ID des Bereitstellungsrepositorys im Projekt zuordnen.
Dies wird durch den folgenden XML-Code erreicht.
testrepository test password
Profilkonfigurationen
Das Maven-Repository kann so konfiguriert werden, dass es in das Profil eingefügt wird. Es kann gleichzeitig mehr als ein Profil geben. Je nach Anforderung können wir ein aktives Profil beibehalten, um zu verschiedenen Umgebungen zu wechseln.
Andere optionale Konfigurationen
Um eine umgebungsspezifische Konfiguration zu erhalten, die nicht für jedes Projekt spezifisch ist, müssen wir die Einstellungen konfigurieren.
kostenlose Software für künstliche Intelligenz für PC
Maven enthält eine Einstellungsdatei, die im Installations- oder Benutzer-Home-Verzeichnis vorhanden ist. Es kümmert sich um die Konfiguration einiger der Umgebungsparameter wie folgt:
- Benutzername und Passwort des Servers
- Speicherort des Repository-Managers
- HTTP-Proxyserver
Sicherheitskonfigurationen
Bis Maven 2.1.0+ haben wir die Möglichkeit, die Passwörter in der Einstellungsdatei zu verschlüsseln. Wir müssen jedoch ein Hauptkennwort erstellen, bevor wir die Verschlüsselung durchführen können.
Maven Plugins
Maven-Plugins sind ein wesentlicher Bestandteil des Maven-Frameworks. Jedes Plugin ist einer bestimmten Aufgabe zugeordnet.
Es gibt zwei Arten von Plugins:
- Plugins erstellen : Sie werden zur Erstellungszeit ausgeführt und sollten unter dem Erstellungs-Tag in der Datei pom.xml beschrieben werden.
- Berichts-Plugins : Sie werden zum Zeitpunkt der Site-Generierung ausgeführt und sollten unter dem Reporting-Tag in der Datei pom.xml beschrieben werden.
Die folgende Liste zeigt einige der Maven-Core-Plugins:
Core Plugins | Aufgaben erledigt |
---|---|
sauber | Bereinigt Artefakte nach dem Build. |
Compiler | Java-Quellcode wird kompiliert. |
bereitstellen | Build-Artefakte werden im Remote-Repository bereitgestellt. |
Installieren | Build-Artefakte werden im lokalen Repository installiert. |
Prüfer | Wird für Integrationstests verwendet. |
Ressourcen | Das Ausgabeverzeichnis erhält die Kopie der Ressourcen für die Aufnahme in Jar. |
Seite? ˅ | Die aktuelle Projektseite wird generiert. |
Prüfer | Wird für Integrationstests verwendet und überprüft bestimmte Bedingungen. |
Einige der Maven Reporting-Plugins sind unten aufgeführt:
Berichts-Plugins | Aufgaben erledigt |
pmd | Ein pmd-Bericht wird generiert. |
Änderungsprotokoll | Die letzten Änderungen von SCM werden in Form einer Liste generiert. |
Änderungen | Bericht über Issue Tracker wird generiert. |
Checkstyle | Checkstyle-Bericht wird generiert. |
Javadoc | Java-Dokument für das Projekt wird generiert. |
todsicherer Bericht | Die Ergebnisse der Komponententests werden in Form eines Berichts erstellt. |
Linkcheck | Der Linkcheck-Bericht für die Projektdokumentation wird generiert. |
jxr | Ein Quellenquerverweis wird erzeugt. |
FAQ-Bereich
F # 1) Ist Maven besser als Gradle?
Antworten: Gradle verwendet einen inkrementellen und arbeitsvermeidenden Ansatz. Gradle überwacht die Eingabe- und Ausgabeaufgaben und führt die erforderlichen aus. Für kleinere Projekte wird Maven jedoch weiterhin bevorzugt, während Gradle für größere und komplexe Projekte geeignet ist.
F # 2) Warum ist Gradle schneller als Maven?
Antworten: Gradle ist aufgrund der folgenden Ansätze von Gradle viel schneller als Maven.
- Verwendung von Gradle Daemon, der Gebäudedetails im Speicher bereit hält.
- Inkrementelle Kompilierung.
- Verwendung eines Build-Cache, der die Artefakte aus früheren Builds abruft.
- Effiziente Modellierung von Abhängigkeiten durch Gradle mit Hilfe des Java-Plugins.
F # 3) Was ist Maven Gradle?
Antworten: Gradle ist ein Automatisierungs-Build-Tool, das auf den Funktionen von Apache Ant und Apache Maven basiert. Es ist Open Source und arbeitet mit einer auf Groovy basierenden domänenbezogenen Sprache. Es wird nicht von der Datei pom.xml gesteuert, wie sie von Maven für die Projektabhängigkeiten und -konfigurationen verwendet wird.
F # 4) Warum wird Maven bevorzugt?
Antworten:
Maven wird wegen der folgenden Vorteile bevorzugt:
- Zentrales Repository für alle Projektabhängigkeiten.
- Behält eine gemeinsame Ordnerstruktur innerhalb der Organisationen bei.
- Kann in Tools zur Versionskontrolle wie Git und Tools zur kontinuierlichen Integration wie Jenkins integriert werden.
- Der Erstellungsprozess wird einfacher, einfacher und einheitlicher.
F # 5) Ist Maven nur für Java?
Antworten: Maven ist ein Projektmanagement- und Build-Tool, das allgemein für Java-Projekte verwendet wird. Es kann jedoch für Projekte verwendet werden, die in Ruby, C #, Scala usw. entwickelt wurden.
F # 6) Warum wird Maven in Eclipse verwendet?
Antworten: Eclipse IDE lädt die Abhängigkeiten und Konfigurationen automatisch aus den Maven-Repositorys herunter. Das Erstellen neuer Maven-Projekte, die Unterstützung bestehender Maven-Projekte und von pom .xml können mithilfe von Eclipse erfolgen.
F # 7) Welche Sprache ist Gradle?
Antworten: Gradle gibt für den Build eine domänenbezogene Sprache an, die auch als DSL bezeichnet wird. Diese Sprache ist in Groovy und Kotlin erhältlich.
beste Chrom-Popup-Blocker-Erweiterung
F # 8) Was sind die Vorteile von Maven?
Maven hat einige Abhängigkeiten wie die folgenden:
- Zentrales Repository für alle Projektabhängigkeiten.
- Behält eine gemeinsame Ordnerstruktur innerhalb der Organisationen bei.
- Kann in Tools zur Versionskontrolle wie Git und Tools zur kontinuierlichen Integration wie Jenkins integriert werden.
- Der Erstellungsprozess wird einfacher und einfacher.
Fazit
In diesem Tutorial wurden Konzepte wie Gradle vs Maven, das Konvertieren von Gradle in Maven und umgekehrt, Maven-Konfigurationen und Plugins erläutert. Außerdem wurden einige der grundlegenden Befehle für Maven und Gradle untersucht.
In Bezug auf Maven-Plugins haben wir einige der Berichts- und Kern-Maven-Plugins besprochen.
Da Maven ein heißes Thema auf dem Markt ist, ist es notwendig, ein Verständnis für das Thema zu entwickeln und Fachwissen zu diesem Tool zu entwickeln.
=> Lesen Sie die Easy Maven Training Series durch.
Literatur-Empfehlungen
- Was ist Maven - Maven Tutorial für Anfänger
- So erstellen Sie ein Gradle-Projekt mit Selen
- Verwenden von Gradle zum Erstellen, Testen und Bereitstellen von Projekten
- Gatling-Skript & Gatling-Projekt mit Maven-Archetyp erstellen
- Integration von Maven mit TestNg unter Verwendung des Maven Surefire Plugins
- Was sind POM (Projektobjektmodell) und pom.xml in Maven?
- Konfigurieren von Maven mit Eclipse Java IDE
- 31 Fragen und Antworten zu den am häufigsten gestellten Fragen zu Maven-Interviews