gradle vs maven maven plugins
Questo tutorial discuterà le differenze tra Gradle e Maven. Imparerai anche a conoscere vari plugin e configurazioni di Maven:
Come Maven, Gradle è uno strumento di automazione utilizzato dagli sviluppatori Java per una build. Gradle è uno strumento open source e utilizza un linguaggio specifico per il dominio ed è sviluppato in Groovy.
=> Dai un'occhiata alla guida all'allenamento di Maven perfetto qui.
Cosa imparerai:
Gradle Vs Maven
Le differenze chiave tra Gradle e Maven sono elencate di seguito:
Gradle | Esperto di |
---|---|
In termini di prestazioni, Gradle è migliore poiché si occupa solo dell'attuale attività in esecuzione e non dell'input o dell'output fornito. | Maven non utilizza gli artefatti di build precedenti o la cache per creare il progetto, quindi il tempo necessario per generare un nuovo progetto è maggiore. |
È un sistema di creazione di automazione sviluppato in Groovy | È uno strumento di compilazione e gestione dei progetti. |
Gradle non è guidato da alcun file xml per la compilazione del progetto, invece utilizza il linguaggio - Groovy che è specifico del dominio. Le informazioni sul progetto sono conservate nello strumento Gradle. | Maven è gestito da un file xml che contiene informazioni su dipendenze, plug-in e profili e così via. |
Gradle funziona in modo incrementale e fornisce un completamento più rapido della build. | Maven non adotta un approccio incrementale ed è più lento in termini di tempi di costruzione rispetto a Gradle. |
La sceneggiatura di Gradle è semplice, non lunga e può essere compresa facilmente. | Maven ha il file xml che è descrittivo, lungo e non può essere facilmente compreso. |
Gradle può essere personalizzato facilmente in quanto ha molte flessibilità in termini di gran numero di opzioni disponibili nello strumento con il supporto IDE. | La personalizzazione di Maven non è facile e talvolta non è possibile poiché non ha il supporto IDE. |
Lo scopo di uno strumento Gradle è di avere nuove funzionalità nel progetto. | Lo scopo di uno strumento Maven è completare un progetto in un tempo determinato. |
In Gradle, la compilazione Java non è un passaggio obbligatorio. | In Maven, la compilazione è un passaggio obbligatorio. |
Gradle è uno strumento relativamente moderno e i suoi utenti sono in numero limitato. | Maven è uno strumento familiare e popolare tra gli sviluppatori Java. |
Numerose dipendenze per il progetto possono essere aggiunte in Gradle senza l'uso di xml. | Numerose dipendenze possono essere aggiunte al progetto aggiungendole al file xml (pom), rendendolo così più complesso e difficile da gestire rispetto a Gradle. |
Il file Build.gradle contiene gli elementi come group, baseName e version. | Il file Pom.xml contiene gli elementi come, e. |
Poche altre differenze tra Maven Vs Gradle
Gradle è costituito da un gruppo di attività che devono essere eseguite. Mentre Maven ha un modello di fasi costante e preciso. Gli obiettivi di Maven sono collegati alle fasi del progetto e ogni obiettivo è simile ai compiti di Gradle.
Prestazione
Per quanto riguarda le prestazioni, sia Gradle che Maven possono eseguire più di una build su diversi moduli in parallelo.
Tuttavia, Gradle segue un approccio di build incrementale e verifica se le attività vengono modificate o meno e si occupa solo dei file che vengono aggiornati.
Gradle ha prestazioni migliori grazie alle caratteristiche elencate di seguito:
- Compilazione di classi Java in modo incrementale.
- Riutilizzare gli artefatti di altre build Gradle con input simili.
- Maggiore utilizzo delle API.
- Compilazione più veloce con l'aiuto del demone del compilatore.
La gestione della cache di build rende Gradle molto più veloce di Maven.
Flessibilità
Gradle è utilizzato da Google come strumento di build per Android perché è progettato in modo tale da poter essere ampliato con le metodologie più elementari. Il modello di Gradle può essere utilizzato per lo sviluppo di C o C ++ e può essere esteso a qualsiasi altro ambiente.
Maven non può essere facilmente personalizzato e spesso non è fattibile. Ciò semplifica la comprensione delle build Maven se non abbiamo a che fare con requisiti complessi o esclusivi. Tuttavia, Gradle è facilmente personalizzabile per l'uso.
Gradle offre un'interessante interfaccia utente Web interattiva per la codifica, il debug e le attività di ottimizzazione della compilazione in Build Scan. Fornisce informazioni importanti su tendenze, cronologia e altri parametri della build.
Gestione delle dipendenze
Gradle ha una migliore implementazione di API e dipendenze rispetto a Maven. Inoltre, consente cache coincidenti. Ciò significa che più progetti possono utilizzare la cache comune senza essere sovrascritti l'uno dall'altro. Gradle ha checksum e sincronizza le cache insieme ai repository.
Ha alcune delle caratteristiche di gestione delle dipendenze come:
- Regole di sostituzione per biblioteche compatibili.
- Sostituito dalle regole.
- Ripristina le dipendenze del progetto con quelle esterne e viceversa.
Sia Gradle che Maven hanno dipendenze dinamiche e transitive. Maven ha i repository locali, centrali e remoti mentre Gradle ha JCenter. Inoltre, ci sono repository personalizzati interni alle organizzazioni.
Esempi di codifica di Gradle e 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
Per eseguire un obiettivo Maven che genera un file jar, viene utilizzato il seguente comando Maven:
occhiali per realtà virtuale per xbox 360
mvn package
Quindi vediamo che il file pom.xml è descrittivo e i progetti Maven con più attività, configurazioni e dipendenze avranno un lungo file xml.
Di seguito viene fornito il codice build.gradle corrispondente che esegue lo stesso risultato:
apply plugin:'java' apply plugin:'maven' group = 'com.softwareTest' version ='2.0' repositories { mavenCentral() } dependencies { testCompile group:'junit', name:'junit', version:'2.10' }
Quindi vediamo che la sceneggiatura di Gradle è più breve rispetto a Maven. Il comando seguente viene utilizzato per eseguire un gruppo di attività.
gradle tasks –all
Vediamo che Gradle è più capace di Maven. Ma ci possono essere occasioni in cui non abbiamo bisogno di tutte queste funzionalità aggiuntive di Gradle. Quindi Maven è più adatto per piccoli progetti mentre Gradle è utilizzato principalmente in progetti più grandi.
Comandi di base Gradle Vs Maven
La tabella seguente elenca alcuni comandi di base di Gradle vs Maven:
Scopo | Comando Gradle | Comando Maven |
---|---|---|
infallibile | I test Junit vengono eseguiti in un programma di caricamento classi isolato. | |
Per generare WAR / EAR / JAR | gradle assemblare | pacchetto mvn |
Per eseguire e compilare | prova gradle | mvn test |
Elimina la directory di build | gradle clean | mvn clean |
Integrazione con Eclipse | gradle eclipse | mvn eclipse: eclipse |
Per l'installazione | gradle install | mvn install |
Per ottenere la versione | gradle -version | mvn -version |
Possiamo convertire Gradle in Maven e viceversa.
Possiamo seguire i passaggi seguenti per cambiare Maven in Gradle:
# 1) Vai alla cartella del progetto Maven (posizione del file pom.xml).
#Due) Esegui il comando gradle init.
Ciò si tradurrà nella generazione simultanea di una build Gradle settings.gradle file e build.gradle verranno creati file.
Per cambiare Gradle in Maven seguiamo i seguenti passaggi in ordine:
# 1) build.gradle file dovrebbe avere il plugin Maven.
# 2) build.gradle file dovrebbe avere il seguente blocco di codice:
apply plugin: 'java' apply plugin: 'maven' group = 'com.test' version = '0.4' dependencies { compile 'commons-lang:commons-lang:2.3' }
# 3) Quindi esegui gradle install.
Ciò comporterà la generazione di file pom-default.xml all'interno della sottocartella pom.
Configurazione di Maven
Le informazioni di configurazione di Maven per l'utilizzo e i progetti creati rimangono nei seguenti luoghi:
- Variabile ambientale MAVEN_OPTs : Contiene le informazioni necessarie per l'avvio di Java Virtual Machine (JVM) e fornisce anche funzioni aggiuntive come le impostazioni di memoria della JVM che possono essere impostate su un valore come -Xms256m -Xmx512m.
- File Settings.xml: Questo file risiede nella directory USER_HOME / .m2. Questo file si occupa della maggior parte delle configurazioni utilizzate in tutti i progetti costruiti in Maven.
- cartella .mvn: Questa cartella trova una posizione al livello superiore della directory del progetto. I file jvm.config, maven.config e extensions.xml contengono informazioni sulla configurazione specifica del progetto.
- File .mvn / extension.xml
- File .mvn / maven.config
- File .mvn / jvm.config
La configurazione di Maven viene eseguita ai livelli elencati di seguito:
- Installazione: Questo è sistemato durante l'installazione di Maven.
- Progetto: Questo è quello statico mantenuto nel file pom.xml.
- Utente: Questo è configurato per un utente specifico.
La configurazione del progetto viene applicata all'intero progetto mentre le altre configurazioni (installazione e utente) vengono applicate all'ambiente in cui stiamo lavorando. L'installazione e le configurazioni utente non possono essere aggiunte come parte dei dati del progetto condiviso.
Configurazione del repository locale
La posizione del repository locale può essere modificata come parte della configurazione dell'utente. Per impostazione predefinita, la posizione è la directory .m2. Ciò si ottiene con il codice xml sottostante.
path to the directory
Configurazione proxy
La configurazione del proxy può essere mantenuta nelle impostazioni.
Configurazione della risoluzione degli artefatti parallela
Maven scarica un massimo di 5 artefatti da vari gruppi in una volta sola.
Per scaricare due artefatti, dobbiamo specificare il seguente comando:
mvn -Dmaven.artifact.threads = 2 verifica
Configurazione della distribuzione e della protezione
la sezione descrive i repository da distribuire in un progetto specifico. Informazioni come nome utente, password e altri parametri di sicurezza non possono essere inseriti all'interno di quel progetto. Per fornire queste informazioni, è necessario aggiungerle in mappato all'ID del repository di distribuzione all'interno del progetto.
Ciò si ottiene con il codice xml sottostante.
testrepository test password
Configurazioni dei profili
Il repository Maven può essere configurato per essere inserito nel profilo. Alla volta, può esserci più di un profilo. A seconda del requisito, possiamo mantenere un profilo attivo in modo da poter passare a vari ambienti.
Altre configurazioni opzionali
Per avere una configurazione specifica dell'ambiente che non è specifica per ogni progetto, è necessario configurare le impostazioni.
software gratuito di intelligenza artificiale per PC
Maven contiene un file di impostazioni che è presente nell'installazione o nella home directory dell'utente. Si occupa della configurazione di alcuni parametri ambientali come di seguito illustrato:
- Nome utente e password del server
- Posizione del gestore del repository
- Server proxy HTTP
Configurazioni di sicurezza
Fino a Maven 2.1.0+, abbiamo la possibilità di crittografare le password all'interno del file delle impostazioni. Ma dobbiamo costruire una password principale prima di passare alla crittografia.
Plugin Maven
I plugin Maven sono parte integrante del framework Maven. Ogni plugin è assegnato a una particolare attività.
Esistono due tipi di plugin come mostrato di seguito:
- Costruisci plugin : Vengono eseguiti al momento della compilazione e dovrebbero essere descritti sotto il tag build nel file pom.xml.
- Plugin di segnalazione : Vengono eseguiti al momento della generazione del sito e dovrebbero essere descritti sotto il tag di segnalazione nel file pom.xml.
L'elenco seguente mostra alcuni dei plugin principali di Maven:
Plugin principali | Compiti eseguiti |
---|---|
pulito | Ripulisce gli artefatti dopo la costruzione. |
compilatore | Il codice sorgente Java viene compilato. |
distribuire | Gli artefatti di build vengono distribuiti nel repository remoto. |
installare | Gli artefatti della build vengono installati nel repository locale. |
verificatore | Utilizzato per i test di integrazione. |
risorse | La directory di output ottiene la copia delle risorse da includere in Jar. |
posto | Viene generato il sito del progetto corrente. |
verificatore | Utilizzato per test di integrazione e verifica di condizioni specifiche. |
Alcuni dei plugin di Maven Reporting sono elencati di seguito:
Plugin di segnalazione | Compiti eseguiti |
pmd | Viene generato un rapporto pmd. |
changelog | Le modifiche recenti da SCM vengono generate sotto forma di elenco. |
i cambiamenti | Viene generato il rapporto sul tracker dei problemi. |
checkstyle | Viene generato il report stile di controllo. |
Javadoc | Viene generato il documento Java per il progetto. |
rapporto infallibile | I risultati degli unit test vengono generati sotto forma di report. |
linkcheck | Viene generato il report Linkcheck per la documentazione del progetto. |
jxr | Viene generato un riferimento incrociato di origine. |
Sezione FAQ
D # 1) Maven è migliore di Gradle?
Risposta: Gradle utilizza un approccio incrementale e di evitamento del lavoro. Gradle monitora le attività di input e output ed esegue quelle richieste. Tuttavia, per i progetti più piccoli Maven è ancora preferito mentre Gradle è adatto per progetti più grandi e complessi.
D # 2) Perché Gradle è più veloce di Maven?
Risposta: Gradle è molto più veloce di Maven a causa dei seguenti approcci di Gradle.
- Uso di Gradle Daemon che mantiene i dettagli della costruzione pronti in memoria.
- Compilazione in modo incrementale.
- Uso di build-cache che ottiene gli artefatti da build precedenti.
- Modellazione delle dipendenze in modo efficiente da Gradle con l'aiuto del plugin Java.
D # 3) Cos'è Maven Gradle?
Risposta: Gradle è uno strumento di creazione di automazione sviluppato sulle funzionalità di Apache Ant e Apache Maven. È open-source e funziona su un linguaggio correlato al dominio basato su Groovy. Non è gestito dal file pom.xml come utilizzato da Maven per le dipendenze e le configurazioni del progetto.
Q # 4) Perché è preferito Maven?
Risposta:
Maven è preferito per i seguenti vantaggi:
- Repository centrale per tutte le dipendenze del progetto.
- Mantiene una struttura di cartelle comune all'interno delle organizzazioni.
- Può essere integrato con strumenti di controllo della versione come Git e strumenti di integrazione continua come Jenkins.
- Il processo di costruzione è reso più semplice, facile e uniforme.
D # 5) Maven è solo per Java?
Risposta: Maven è uno strumento di creazione e gestione dei progetti generalmente utilizzato per i progetti Java. Tuttavia può essere utilizzato per progetti sviluppati in Ruby, C #, Scala e così via.
Q # 6) Perché Maven viene utilizzato in Eclipse?
Risposta: L'IDE Eclipse scarica automaticamente le dipendenze e le configurazioni dai repository Maven. Inoltre, la creazione di nuovi progetti Maven, il supporto al progetto Maven esistente e pom .xml possono essere eseguiti con l'aiuto di Eclipse.
D # 7) Che lingua è Gradle?
Risposta: Gradle fornisce un linguaggio relativo al dominio chiamato anche DSL per la compilazione. Questa lingua è disponibile in Groovy e Kotlin.
domande e risposte dell'intervista perl pdf
Q # 8) Quali sono i vantaggi di Maven?
Maven ha alcune dipendenze come le seguenti:
- Repository centrale per tutte le dipendenze del progetto.
- Mantiene una struttura di cartelle comune all'interno delle organizzazioni.
- Può essere integrato con strumenti di controllo della versione come Git e strumenti di integrazione continua come Jenkins.
- Il processo di costruzione è reso più semplice e facile.
Conclusione
Questo tutorial ha discusso concetti come Gradle vs Maven, come convertire Gradle in Maven e viceversa, configurazioni di Maven e plugin. Inoltre, sono stati esplorati alcuni dei comandi di base su Maven e Gradle.
Per quanto riguarda i plug-in Maven, abbiamo discusso alcuni dei report e dei plug-in Maven principali.
Essendo un argomento caldo nel mercato, è necessario sviluppare una comprensione dell'argomento e sviluppare competenze su questo strumento.
=> Leggi la serie di formazione Easy Maven.
Lettura consigliata
- Cos'è Maven - Tutorial Maven per principianti
- Come creare un progetto Gradle con selenio
- Come utilizzare Gradle per costruire, testare e distribuire progetti
- Script Gatling e creazione di progetti Gatling utilizzando Maven Archetype
- Integrazione di Maven con TestNg utilizzando il plugin Maven Surefire
- Cosa sono POM (Project Object Model) e pom.xml in Maven
- Configurazione di Maven con Eclipse Java IDE
- 31 Domande e risposte ai colloqui di Maven più frequenti