gradle vs maven maven plugins
Deze tutorial bespreekt de verschillen tussen Gradle en Maven. Je leert ook over verschillende Maven-plug-ins en configuraties:
Net als Maven is Gradle een automatiseringstool die door Java-ontwikkelaars wordt gebruikt voor een build. Gradle is een open-source tool en maakt gebruik van een taal die specifiek is voor het domein en is ontwikkeld in Groovy.
Bekijk hier de Perfect Maven-trainingsgids.
Wat je leert:
Gradle Vs Maven
De belangrijkste verschillen tussen Gradle en Maven worden hieronder in tabelvorm weergegeven:
Grijpen | Maven |
---|---|
Qua prestaties is Gradle beter omdat het alleen de huidige lopende taak behandelt en niet de invoer of uitvoer die wordt geleverd. | Maven gebruikt de eerdere build-artefacten of cache niet om het project te maken, dus de tijd die nodig is voor het genereren van een nieuw project is meer. |
Het is een automatiseringssysteem dat is ontwikkeld in Groovy | Het is een bouw- en projectbeheertool. |
Gradle wordt niet aangestuurd door een xml-bestand voor de projectopbouw, maar gebruikt de taal - Groovy, die domeinspecifiek is. De projectinformatie wordt bewaard in de Gradle-tool. | Maven wordt aangestuurd door een xml-bestand dat informatie bevat over afhankelijkheden, plug-ins en profielen, enzovoort. |
Gradle werkt stapsgewijs en zorgt voor een snellere voltooiing van de build. | Maven heeft geen incrementele benadering en is langzamer in termen van build-timings dan Gradle. |
Gradle-script is eenvoudig, niet lang en kan gemakkelijk worden begrepen. | Maven heeft het xml-bestand dat beschrijvend, uitgebreid en niet gemakkelijk te begrijpen is. |
Gradle kan eenvoudig worden aangepast omdat het veel flexibiliteit biedt in termen van een groot aantal beschikbare opties in de tool met de IDE-ondersteuning. | De aanpassing van Maven is niet eenvoudig en soms niet mogelijk omdat het geen IDE-ondersteuning heeft. |
Het doel van een Gradle-tool is om nieuwe functies in het project te hebben. | Het doel van een Maven-tool is om een project in een vaste tijd af te ronden. |
In Gradle is Java-compilatie geen vereiste stap. | In Maven is compilatie een vereiste stap. |
Gradle is een relatief moderne tool en het aantal gebruikers is beperkt. | Maven is een bekende tool en populair onder de Java-ontwikkelaars. |
Talloze afhankelijkheden voor het project kunnen in Gradle worden toegevoegd zonder het gebruik van xml. | Er kunnen talrijke afhankelijkheden aan het project worden toegevoegd door ze toe te voegen aan het xml-bestand (pom), waardoor het complexer en moeilijker te beheren is dan Gradle. |
Build.gradle-bestand bevat de elementen zoals groep, basisnaam en versie. | Pom.xml-bestand bevat de elementen zoals, en. |
Er zijn nog maar weinig verschillen tussen Maven en Gradle
Gradle is opgebouwd uit een groep taken die moeten worden uitgevoerd. Terwijl Maven een constant en nauwkeurig model van fasen heeft. Maven-doelen zijn gekoppeld aan de fasen van het project en elk doel is vergelijkbaar met de Gradle-taken.
Prestatie
Wat de prestaties betreft, kunnen zowel Gradle als Maven meer dan één builds parallel op verschillende modules uitvoeren.
Gradle volgt echter een incrementele build-benadering en controleert of de taken al dan niet zijn gewijzigd en behandelt alleen de bestanden die worden bijgewerkt.
Gradle presteert beter vanwege de onderstaande functies:
- Compilatie van Java-klassen op een incrementele manier.
- Hergebruik van de build-artefacten van andere Gradle-builds met vergelijkbare inputs.
- Meer gebruik van API's.
- Snellere compilatie met behulp van compilerdaemon.
Build-cachebeheer maakt Gradle veel sneller dan Maven.
Flexibiliteit
Gradle wordt door Google gebruikt als build-tool voor Android omdat het zo is ontworpen dat het kan worden uitgebreid met de meest basismethoden. Het model van Gradle kan worden gebruikt voor de ontwikkeling van C of C ++ en kan worden uitgebreid naar elke andere omgeving.
Maven kan niet eenvoudig worden aangepast en is vaak niet haalbaar. Dit maakt het gemakkelijker om Maven-builds te begrijpen als we niet te maken hebben met complexe of exclusieve vereisten. Gradle kan echter gemakkelijk worden aangepast voor gebruik.
Gradle biedt een interessante interactieve webinterface voor het coderen, debuggen en bouwen van optimalisatietaken in de Build Scan. Het biedt belangrijke informatie over de trends, geschiedenis en andere parameters van de build.
Afhankelijkheidsbeheer
Gradle heeft een betere implementatie van API's en afhankelijkheden dan Maven. Bovendien zijn er toevallige caches mogelijk. Dit betekent dat meerdere projecten de gemeenschappelijke cache kunnen gebruiken zonder door elkaar te worden overschreven. Gradle heeft checksum en synchroniseert caches samen met de repositories.
Het heeft een aantal kenmerken van afhankelijkheidsbeheer, zoals:
- Vervangingsregels voor compatibele bibliotheken.
- Vervangen door regels.
- Herstel de afhankelijkheden van het project met externe en vice versa.
Zowel Gradle als Maven hebben dynamische en transitieve afhankelijkheden. Maven heeft de lokale, centrale en externe opslagplaatsen, terwijl Gradle JCenter heeft. Ook zijn er interne opslagplaatsen op maat voor de organisaties.
Coderingsvoorbeelden van Gradle en Maven
Om een Maven-doel uit te voeren dat een jar-bestand genereert, wordt het volgende Maven-commando gebruikt:
selenium interviewvragen en antwoorden voor 4 jaar ervaring
We zien dus dat het pom.xml-bestand beschrijvend is en dat Maven-projecten met meerdere taken, configuraties en afhankelijkheden een lang xml-bestand hebben.
De bijbehorende build.gradle-code die hetzelfde resultaat oplevert, wordt hieronder weergegeven:
We zien dus dat het Gradle-script korter is in vergelijking met Maven. Het onderstaande commando wordt gebruikt om een groep taken uit te voeren.
We zien dat Gradle meer in staat is dan Maven. Maar het kan voorkomen dat we al deze aanvullende functies van Gradle niet nodig hebben. Maven is dus meer geschikt voor kleine projecten, terwijl Gradle vooral wordt gebruikt in grotere projecten.
Gradle Vs Maven Basic Commands
De volgende tabel bevat enkele basisopdrachten van Gradle vs Maven:
Doel | Gradle-opdracht | Maven commando |
---|---|---|
trefzeker | Junit-tests worden uitgevoerd in een geïsoleerde klassenlader. | |
Om WAR / EAR / JAR te genereren | gradle monteren | mvn-pakket |
Om uit te voeren en te compileren | graduele test | mvn-test |
Verwijder de directory van build | gradle schoon | mvn schoon |
Integreer met Eclipse | geleidelijke zonsverduistering | mvn verduistering: verduistering |
Voor installatie | gradle installeren | mvn installeren |
Om de versie te krijgen | gradle -versie | mvn -versie |
We kunnen Gradle omzetten in Maven en andersom.
We kunnen de onderstaande stappen volgen om Maven in Gradle te veranderen:
# 1) Navigeer naar de Maven-projectmap (locatie van pom.xml-bestand).
#twee) Voer het commando uit gradle init.
Dit zal resulteren in het gelijktijdig genereren van een Gradle-build settings.gradle bestand en build.gradle bestanden worden aangemaakt.
Om Gradle in Maven te veranderen, volgen we de onderstaande stappen in deze volgorde:
# 1) build.gradle bestand moet de Maven-plug-in hebben.
# 2) build.gradle bestand moet het volgende codeblok hebben:
# 3) Voer dan uit gradle installeren.
Dit zal resulteren in het genereren van pom-default.xml-bestanden in de pom-submap.
Configuratie van Maven
Maven-configuratie-informatie voor gebruik en gebouwde projecten blijft op de volgende plaatsen:
- MAVEN_OPTs omgevingsvariabele : Het bevat de informatie die nodig is voor het starten van Java Virtual Machine (JVM) en biedt ook extra functies zoals geheugeninstellingen van de JVM die kunnen worden ingesteld op een waarde als -Xms256m -Xmx512m.
- Settings.xml-bestand: Dit bestand bevindt zich in de map USER_HOME / .m2. Dit bestand zorgt voor de meeste configuraties die worden gebruikt in alle projecten die in Maven zijn gebouwd.
- .mvn-map: Deze map vindt een plaats op het hoogste niveau van de projectdirectory. De bestanden jvm.config, maven.config en extensions.xml bevatten informatie over de projectspecifieke configuratie.
- .mvn / extension.xml-bestand
- .mvn / maven.config-bestand
- .mvn / jvm.config-bestand
De configuratie van Maven gebeurt op de onderstaande niveaus:
- Installatie: Dit wordt bij de installatie van Maven opgevangen.
- Project: Dit is de statische die wordt bijgehouden in het pom.xml-bestand.
- Gebruiker: Dit is geconfigureerd voor een specifieke gebruiker.
De projectconfiguratie wordt toegepast op het hele project terwijl de andere configuraties (installatie en gebruiker) worden toegepast op de omgeving waarin we werken. De installatie- en gebruikersconfiguraties kunnen niet worden toegevoegd als onderdeel van de gedeelde projectgegevens.
Configuratie lokale repository
De lokale repositorylocatie kan worden gewijzigd als onderdeel van de configuratie van de gebruiker. Standaard is de locatie de map .m2. Dit wordt bereikt door de onderstaande xml-code.
Proxy-configuratie
De proxyconfiguratie kan worden onderhouden in de instellingen.
Configuratie van parallelle artefactresolutie
Maven downloadt in één keer maximaal 5 artefacten van verschillende groepen.
Om twee artefacten te downloaden, moeten we de volgende opdracht specificeren:
mvn -Dmaven.artifact.threads = 2 verifiëren
Implementatie en beveiligingsconfiguratie
sectie beschrijft de repositories die in een specifiek project moeten worden geïmplementeerd. Informatie zoals gebruikersnaam, wachtwoord en andere beveiligingsparameters kunnen niet in dat project worden geplaatst. Om deze informatie te verstrekken, moeten we ze toevoegen aan de id van de implementatie-repository in het project.
Dit wordt bereikt door de onderstaande xml-code.
Profielconfiguraties
Maven-repository kan worden geconfigureerd om in het profiel te worden geplaatst. Er kan tegelijkertijd meer dan één profiel zijn. Afhankelijk van de behoefte kunnen we één profiel actief houden zodat we kunnen switchen naar verschillende omgevingen.
Andere optionele configuraties
Om een omgevingsspecifieke configuratie te hebben die niet specifiek is voor elk project, moeten we de instellingen configureren.
hoe speel je swf-bestanden
Maven bevat een instellingenbestand dat aanwezig is in de basismap van de installatie of de gebruiker. Het zorgt voor de configuratie van enkele van de omgevingsparameters zoals hieronder weergegeven:
- Server gebruikersnaam en wachtwoord
- Locatie van de repositorymanager
- HTTP-proxyserver
Beveiligingsconfiguraties
Tot Maven 2.1.0+ hebben we de mogelijkheid om de wachtwoorden in het instellingenbestand te versleutelen. Maar we moeten een hoofdwachtwoord construeren voordat we voor codering gaan.
Maven-plug-ins
Maven-plug-ins zijn een integraal onderdeel van het Maven-framework. Elke plug-in is toegewezen aan een bepaalde taak.
Er zijn twee soorten plug-ins, zoals hieronder weergegeven:
- Bouw plug-ins : Ze worden uitgevoerd tijdens de build en moeten worden beschreven onder de build-tag in het pom.xml-bestand.
- Rapportage-plug-ins : Ze worden uitgevoerd op het moment dat de site wordt gegenereerd en moeten worden beschreven onder de rapportagetag in het pom.xml-bestand.
De onderstaande lijst toont enkele van de kernplug-ins van Maven:
Core-plug-ins | Taken uitgevoerd |
---|---|
schoon | Ruimt artefacten op na het bouwen. |
compiler | Java-broncode is gecompileerd. |
inzetten | Build-artefacten worden geïmplementeerd in de externe opslagplaats. |
installeren | Build-artefacten worden in de lokale repository geïnstalleerd. |
verificateur | Wordt gebruikt voor integratietests. |
middelen | Uitvoermap haalt de kopie van de bronnen op voor opname in Jar. |
site | De huidige projectsite wordt gegenereerd. |
verificateur | Wordt gebruikt voor integratietest en controleert specifieke voorwaarden. |
Enkele van de Maven Reporting-plug-ins worden hieronder vermeld:
Rapportage-plug-ins | Taken uitgevoerd |
pmd | Er wordt een pmd-rapport gegenereerd. |
changelog | Recente wijzigingen van SCM worden gegenereerd in de vorm van een lijst. |
veranderingen | Rapport over probleemtracker wordt gegenereerd. |
checkstyle | Checkstyle-rapport wordt gegenereerd. |
Javadoc | Java-document voor het project wordt gegenereerd. |
trefzeker rapport | Resultaten van unit tests worden gegenereerd in de vorm van een rapport. |
linkcheck | Linkcheck-rapport voor projectdocumentatie wordt gegenereerd. |
jxr | Er wordt een bronverwijzing gegenereerd. |
FAQ-sectie
Vraag 1) Is Maven beter dan Gradle?
Antwoord: Gradle hanteert een incrementele en werkvermijdende aanpak. Gradle bewaakt de invoer- en uitvoertaken en voert de taken uit die vereist zijn. Voor kleinere projecten heeft Maven echter nog steeds de voorkeur, terwijl Gradle geschikt is voor grotere en complexe projecten.
Vraag 2) Waarom is Gradle sneller dan Maven?
Antwoord: Gradle is een stuk sneller dan Maven vanwege de onderstaande benaderingen van Gradle.
- Gebruik van Gradle Daemon dat gebouwdetails in het geheugen gereed houdt.
- Compilatie op een incrementele manier.
- Gebruik van build-cache die de artefacten van eerdere builds ophaalt.
- Afhankelijkheden op een efficiënte manier modelleren door Gradle met behulp van een Java-plug-in.
Vraag 3) Wat is Maven Gradle?
Antwoord: Gradle is een tool voor het bouwen van automatisering die is ontwikkeld op basis van de functies van Apache Ant en Apache Maven. Het is open-source en werkt in op Groovy gebaseerde domeingerelateerde taal. Het wordt niet aangedreven door het pom.xml-bestand zoals gebruikt door Maven voor de projectafhankelijkheden en configuraties.
V # 4) Waarom heeft Maven de voorkeur?
Antwoord:
Maven heeft de voorkeur vanwege de volgende voordelen:
- Centrale opslagplaats voor alle projectafhankelijkheden.
- Behoudt een gemeenschappelijke mappenstructuur binnen de organisaties.
- Kan worden geïntegreerd met versiebeheertools zoals Git en continue integratietool zoals Jenkins.
- Het bouwproces is eenvoudiger, gemakkelijk en uniform gemaakt.
V # 5) Is Maven alleen voor Java?
Antwoord: Maven is een projectmanagement- en buildtool die over het algemeen wordt gebruikt voor Java-projecten. Het kan echter worden gebruikt voor projecten die zijn ontwikkeld in Ruby, C #, Scala, enzovoort.
V # 6) Waarom wordt Maven gebruikt in Eclipse?
Antwoord: Eclipse IDE downloadt automatisch de afhankelijkheden en configuraties van de Maven-repositories. Ook het maken van nieuwe Maven-projecten, ondersteuning van bestaand Maven-project en pom .xml kan worden gedaan met behulp van Eclipse.
V # 7) Welke taal is Gradle?
Antwoord: Gradle geeft voor de build een domeingerelateerde taal, ook wel DSL genoemd. Deze taal is verkrijgbaar in Groovy en Kotlin.
beste gratis Windows 10-reparatiesoftware
Q # 8) Wat zijn de voordelen van Maven?
Maven heeft een aantal afhankelijkheden, zoals de volgende:
- Centrale opslagplaats voor alle projectafhankelijkheden.
- Behoudt een gemeenschappelijke mappenstructuur binnen de organisaties.
- Kan worden geïntegreerd met versiebeheertools zoals Git en continue integratietool zoals Jenkins.
- Het bouwproces is eenvoudiger en gemakkelijker gemaakt.
Gevolgtrekking
Deze tutorial besprak de concepten zoals Gradle vs Maven, hoe Gradle naar Maven te converteren en vice versa, Maven-configuraties en plug-ins. Ook werden enkele basisopdrachten op Maven en Gradle onderzocht.
Wat Maven-plug-ins betreft, hebben we enkele van de rapportage- en kernplug-ins van Maven besproken.
Omdat Maven een hot topic in de markt is, is het noodzakelijk om inzicht in het onderwerp te ontwikkelen en expertise te ontwikkelen over deze tool.
Lees de Easy Maven-trainingsreeks door.
Aanbevolen literatuur
- Wat is Maven - Maven-zelfstudie voor beginners
- Hoe een Gradle-project te maken met selenium
- Hoe Gradle te gebruiken om projecten te bouwen, testen en implementeren
- Gatling-script & maak een Gatling-project met behulp van Maven Archetype
- Integratie van Maven met TestNg met behulp van de Maven Surefire-plug-in
- Wat zijn POM (Project Object Model) en pom.xml in Maven
- Maven configureren met Eclipse Java IDE
- 31 Meest gestelde vragen en antwoorden over het Maven-interview