gradle vs maven maven plugins
Denna handledning diskuterar skillnaderna mellan Gradle vs Maven. Du kommer också att lära dig om olika Maven-plugins och konfigurationer:
Precis som Maven är Gradle ett automatiseringsverktyg som används av Java-utvecklare för en byggnad. Gradle är ett verktyg för öppen källkod och använder ett språk som är specifikt för domänen och utvecklas i Groovy.
=> Kolla in den perfekta träningsguiden för Maven här.
Vad du kommer att lära dig:
Gradle mot Maven
De viktigaste skillnaderna mellan Gradle och Maven visas nedan:
Gradle | Maven |
---|---|
När det gäller prestanda är Gradle bättre eftersom det bara handlar om den aktuella löpande uppgiften och inte den ingång eller utmatning som tillhandahålls. | Maven använder inte de tidigare byggartefakterna eller cachen för att skapa projektet, så den tid som krävs för att skapa ett nytt projekt är längre. |
Det är ett automatiseringssystem som utvecklats i Groovy | Det är ett verktyg för att bygga och projektleda. |
Gradle drivs inte av någon xml-fil för projektbyggnaden, utan använder språket - Groovy som är domänspecifikt. Projektinformationen sparas i Gradle-verktyget. | Maven drivs av en xml-fil som innehåller information om beroenden, plugins och profiler och så vidare. |
Gradle arbetar stegvis och ger en snabbare slutförande av byggnaden. | Maven tar inte ett stegvis tillvägagångssätt och är långsammare när det gäller byggtider än Gradle. |
Gradle-skript är enkelt, inte långt och kan lätt förstås. | Maven har xml-filen som är beskrivande, lång och inte lätt att förstå. |
Gradle kan enkelt anpassas eftersom det har mycket flexibilitet när det gäller ett stort antal alternativ som finns i verktyget med IDE-stöd. | Mavens anpassning är inte lätt och ibland inte möjligt eftersom det inte har IDE-stöd. |
Målet för ett Gradle-verktyg är att ha nya funktioner i projektet. | Målet för ett Maven-verktyg är att avsluta ett projekt på en fast tid. |
I Gradle är Java-kompilering inte ett nödvändigt steg. | I Maven är sammanställning ett nödvändigt steg. |
Gradle är ett relativt modernt verktyg och dess användare är begränsade i antal. | Maven är ett välbekant verktyg och populärt bland Java-utvecklarna. |
Många beroenden för projektet kan läggas till i Gradle utan användning av xml. | Många beroenden kan läggas till i projektet genom att lägga till dem i xml-filen (pom), vilket gör det mer komplicerat och svårt att hantera än Gradle. |
Build.gradle-filen innehåller element som grupp, basnamn och version. | Pom.xml-filen innehåller elementen som, och. |
Få fler skillnader mellan Maven Vs Gradle
Gradle är uppbyggd av en grupp uppgifter som måste utföras. Medan Maven har en konstant och exakt modell av faser. Maven-mål är kopplade till projektets faser och varje mål liknar Gradle-uppgifterna.
Prestanda
När det gäller prestanda kan både Gradle och Maven köra mer än en bygger på olika moduler parallellt.
Gradle följer dock en inkrementell byggmetod och verifierar om uppgifterna ändras eller inte och hanterar endast de filer som uppdateras.
Gradle har bättre prestanda på grund av följande funktioner:
- Java-klasskompilering på ett inkrementellt sätt.
- Återanvända byggartefakter från andra Gradle-byggnader med liknande ingångar.
- Mer användning av API: er.
- Snabbare sammanställning med hjälp av kompilatordemon.
Byggcachehantering gör Gradle mycket snabbare än Maven.
Flexibilitet
Gradle används av Google som ett byggverktyg för Android eftersom det är utformat på ett sådant sätt att det kan utökas med de mest grundläggande metoderna. Gradles modell kan användas för utveckling av C eller C ++ och kan utvidgas till alla andra miljöer.
Maven kan inte enkelt anpassas och är inte ofta genomförbart. Detta gör det lättare att förstå Maven builds om vi inte behöver hantera några komplexa eller exklusiva krav. Gradle är dock lätt anpassningsbar för användning.
Gradle ger ett intressant interaktivt webbgränssnitt för kodning, felsökning och optimeringsuppgifter i Build Scan. Det ger viktig information om trender, historik och andra parametrar i byggnaden.
Beroendehantering
Gradle har bättre API: er och beroendeberoende än Maven. Dessutom möjliggör det sammanfallande cachar. Detta innebär att flera projekt kan använda den vanliga cachen utan att skrivas över av varandra. Gradle har kontrollsumma och synkroniserar cacheminnet tillsammans med förvaren.
Det har några av beroendeshanteringsegenskaperna som:
- Ersättningsregler för kompatibla bibliotek.
- ReplacedBy regler.
- Återställ projektets beroenden med externa och vice versa.
Både Gradle och Maven har dynamiska och övergående beroenden. Maven har de lokala, centrala och avlägsna förvaren medan Gradle har JCenter. Det finns också anpassade förvar internt i organisationerna.
Kodningsexempel på Gradle And 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
För att utföra ett Maven-mål som genererar en jar-fil används följande Maven-kommando:
hur man lägger till ett element i en array i java
mvn package
Således ser vi att pom.xml-filen är beskrivande och Maven-projekt med flera uppgifter, konfigurationer och beroenden kommer att ha lång xml-fil.
Motsvarande build.gradle-kod med samma resultat ges nedan:
apply plugin:'java' apply plugin:'maven' group = 'com.softwareTest' version ='2.0' repositories { mavenCentral() } dependencies { testCompile group:'junit', name:'junit', version:'2.10' }
Således ser vi att Gradle-skriptet är kortare jämfört med Maven. Kommandot nedan används för att utföra en grupp uppgifter.
gradle tasks –all
Vi ser att Gradle är mer kapabel än Maven. Men det kan finnas tillfällen då vi inte behöver alla dessa ytterligare funktioner i Gradle. Så Maven är mer lämpad för små projekt medan Gradle oftast används i större projekt.
Gradle Vs Maven Basic Commands
I följande tabell listas några grundläggande kommandon för Gradle vs Maven:
Ändamål | Gradle-kommando | Maven kommando |
---|---|---|
säker | Junit-test körs i en isolerad klasslastare. | |
Att generera WAR / EAR / JAR | gradle montera | mvn-paket |
Att springa och kompilera | gradertest | mvn-test |
Ta bort katalogen för build | gradle ren | mvn ren |
Integrera med Eclipse | gradvis förmörkelse | mvn-förmörkelse: förmörkelse |
För installation | gradle installation | installera mvn |
För att få versionen | gradle -version | mvn -version |
Vi kan konvertera Gradle till Maven och tvärtom.
Vi kan följa stegen nedan för att ändra Maven till Gradle:
# 1) Navigera till Maven-projektmappen (plats för pom.xml-filen).
#två) Utför kommandot grad init.
Detta kommer att generera en Gradle-byggnad samtidigt settings.gradle fil och build.gradle filer skapas.
För att ändra Gradle till Maven följer vi stegen nedan i ordning:
# 1) build.gradle filen ska ha Maven-plugin.
# 2) build.gradle filen ska ha följande kodblock:
apply plugin: 'java' apply plugin: 'maven' group = 'com.test' version = '0.4' dependencies { compile 'commons-lang:commons-lang:2.3' }
# 3) Kör sedan gradle installation.
Detta resulterar i att generera pom-default.xml-filer i pom-undermappen.
Configuration Of Maven
Maven-konfigurationsinformation för användning och byggda projekt finns kvar på följande platser:
- MAVEN_OPTs miljövariabel : Den innehåller den information som krävs för att starta Java Virtual Machine (JVM) och tillhandahåller också ytterligare funktioner som att minnesinställningarna för JVM kan ställas in till ett värde som -Xms256m -Xmx512m.
- Filen Settings.xml: Den här filen finns i katalogen USER_HOME / .m2. Den här filen tar hand om de flesta konfigurationer som används i alla projekt byggda i Maven.
- .mvn-mapp: Den här mappen hittar en plats på den översta nivån i projektkatalogen. Filerna jvm.config, maven.config och extensions.xml har information om den projektspecifika konfigurationen.
- .mvn / extension.xml-fil
- .mvn / maven.config-fil
- .mvn / jvm.config-fil
Konfiguration av Maven görs på de nivåer som anges nedan:
- Installation: Detta ryms under installationen av Maven.
- Projekt: Detta är den statiska som bibehålls i filen pom.xml.
- Användare: Detta är konfigurerat för en specifik användare.
Projektkonfigurationen tillämpas på hela projektet medan andra konfigurationer (installation och användare) tillämpas på den miljö där vi arbetar. Installations- och användarkonfigurationer kan inte läggas till som en del av den delade projektdata.
Lokal förvarskonfiguration
Den lokala förvarets plats kan ändras som en del av användarens konfiguration. Som standard är platsen .m2-katalog. Detta uppnås med nedanstående xml-kod.
path to the directory
Proxy-konfiguration
Proxy-konfigurationen kan bibehållas i inställningarna.
Parallell konfiguration av artefaktupplösning
Maven laddar ner högst 5 artefakter från olika grupper samtidigt.
För att ladda ner två artefakter måste vi ange följande kommando:
mvn -Dmaven.artifact.threads = 2 verifiera
Driftsättning och säkerhetskonfiguration
avsnittet beskriver de förråd som ska distribueras i ett specifikt projekt. Information som användarnamn, lösenord och andra säkerhetsparametrar kan inte placeras i projektet. För att kunna tillhandahålla denna information måste vi lägga till dem mappade till id för distributionsförvaret i projektet.
Detta uppnås med nedanstående xml-kod.
testrepository test password
Profiler Konfigurationer
Maven-arkivet kan konfigureras för att sättas in i profilen. Det kan finnas mer än en profil åt gången. Beroende på kravet kan vi behålla en aktiv profil så att vi kan byta till olika miljöer.
Andra valfria konfigurationer
För att ha en miljöspecifik konfiguration som inte är specifik för varje projekt måste vi konfigurera inställningarna.
c ++ konvertera char * till int
Maven innehåller en inställningsfil som finns i installations- eller användarens hemkatalog. Det tar hand om konfigurationen av några av miljöparametrarna enligt nedan:
- Server användarnamn och lösenord
- Förvarets chefs plats
- HTTP-proxyserver
Säkerhetskonfigurationer
Till Maven 2.1.0+ har vi möjlighet att kryptera lösenorden i inställningsfilen. Men vi måste konstruera ett huvudlösenord innan vi går för kryptering.
Maven Plugins
Maven-plugins är en integrerad del av Maven-ramverket. Varje plugin tilldelas en viss uppgift.
Det finns två typer av plugins som visas nedan:
- Bygg plugins : De körs vid byggtiden och ska beskrivas under byggtaggen i pom.xml-filen.
- Rapporteringsinsticksprogram : De körs vid platsgenereringen och bör beskrivas under rapporteringstaggen i pom.xml-filen.
Nedanstående lista visar några av Maven-kärninsticksprogrammen:
Core Plugins | Uppgifter utförda |
---|---|
rena | Rengör artefakter efter byggnaden. |
kompilator | Java-källkoden sammanställs. |
distribuera | Byggartefakter distribueras till fjärrförvaret. |
Installera | Byggartefakter installeras i det lokala förvaret. |
bekräftare | Används för integrationstester. |
Resurser | Utdatakatalogen får en kopia av resurserna för att inkluderas i Jar. |
webbplats | Nuvarande projektsida genereras. |
bekräftare | Används för integrationstest och kontrollerar specifika förhållanden. |
Några av Maven Reporting-tilläggen listas nedan:
Rapporteringsinsticksprogram | Uppgifter utförda |
pmd | En PMD-rapport genereras. |
förändringslogg | Senaste ändringar från SCM genereras i form av en lista. |
ändringar | En rapport om frågeställaren genereras. |
checkstil | Checkstyle-rapporten genereras. |
Javadoc | Java-dokument för projektet genereras. |
säkerhetsrapport | Resultaten av enhetstester genereras i form av en rapport. |
länkcheck | Linkcheck-rapport för projektdokumentation genereras. |
jxr | En källkorsreferens genereras. |
Vanliga frågor och svar
F # 1) Är Maven bättre än Gradle?
Svar: Gradle använder sig av en stegvis metod och arbetsundvikande. Gradle övervakar in- och utmatningsuppgifterna och utför de som krävs. Men för mindre projekt föredras Maven fortfarande medan Gradle är lämplig för större och komplexa projekt.
F # 2) Varför är Gradle snabbare än Maven?
Svar: Gradle är mycket snabbare än Maven på grund av Gradles nedanstående tillvägagångssätt.
- Användning av Gradle Daemon som håller byggnadsdetaljer redo i minnet.
- Sammanställning på ett inkrementellt sätt.
- Användning av build-cache som hämtar artefakterna från tidigare builds.
- Modellering av beroenden på ett effektivt sätt av Gradle med hjälp av Java-plugin.
F # 3) Vad är Maven Gradle?
Svar: Gradle är ett automatiseringsverktyg som är utvecklat med funktionerna i Apache Ant och Apache Maven. Det är öppen källkod och fungerar på Groovy-baserat domänrelaterat språk. Det drivs inte av pom.xml-filen som används av Maven för projektberoenden och konfigurationer.
F # 4) Varför föredras Maven?
Svar:
Maven föredras på grund av följande fördelar:
- Centralt arkiv för alla projektberoenden.
- Underhåller en gemensam mappstruktur inom organisationerna.
- Kan integreras med versionskontrollverktyg som Git och kontinuerligt integrationsverktyg som Jenkins.
- Byggprocessen görs enklare, enkel och enhetlig.
F # 5) Är Maven bara för Java?
Svar: Maven är ett projektlednings- och byggverktyg som vanligtvis används för Java-projekt. Det kan dock användas för projekt som utvecklats i Ruby, C #, Scala och så vidare.
F # 6) Varför används Maven i Eclipse?
Svar: Eclipse IDE hämtar automatiskt beroenden och konfigurationerna från Maven-arkiv. Att skapa nya Maven-projekt, stöd till befintligt Maven Project och pom .xml kan också göras med hjälp av Eclipse.
F # 7) Vilket språk är Gradle?
Svar: Gradle ger ett domänrelaterat språk som även kallas DSL för build. Detta språk kan erhållas i Groovy och Kotlin.
unix hitta skillnad mellan två filer
F # 8) Vilka är fördelarna med Maven?
Maven har vissa beroenden som följande:
- Centralt arkiv för alla projektberoenden.
- Underhåller en gemensam mappstruktur inom organisationerna.
- Kan integreras med versionskontrollverktyg som Git och kontinuerligt integrationsverktyg som Jenkins.
- Byggprocessen görs enklare och lättare.
Slutsats
Denna handledning diskuterade begreppen som Gradle vs Maven, hur man konverterar Gradle till Maven och vice versa, Maven-konfigurationer och plugins. Några av de grundläggande kommandona på Maven och Gradle undersöktes också.
När det gäller Maven-plugins diskuterade vi några av rapporterings- och kärn-Maven-plugins.
Eftersom Maven är ett hett ämne på marknaden är det nödvändigt att utveckla förståelsen för ämnet och utveckla expertis om detta verktyg.
=> Läs igenom Easy Maven Training Series.
Rekommenderad läsning
- Vad är Maven - Maven-handledning för nybörjare
- Hur man skapar Gradle-projekt med selen
- Hur man använder Gradle för att bygga, testa och distribuera projekt
- Gatling Script & Skapa Gatling-projekt med Maven Archetype
- Integration av Maven med TestNg med hjälp av Maven Surefire Plugin
- Vad är POM (projektobjektmodell) och pom.xml i Maven
- Konfigurera Maven med Eclipse Java IDE
- 31 Vanliga frågor och svar om Maven-intervjuer