2010-08-20 12 views
14

Mi piacerebbe conoscere le ragioni per le quali le persone usano o meno Maven. Stiamo per passare tutte le nostre build a Maven 2 e non abbiamo molta esperienza con esso.Quali sono i vantaggi/svantaggi dell'uso di Maven?

Quali sono i vantaggi/svantaggi di usare Maven 2, cose del genere:

  • Perché si passa a Maven?
  • Perché hai buttato via Maven e usato altro ?
  • Che problema ha risolto ?
  • Che problema ha causato la causa ?

Grazie!

risposta

10

Ho utilizzato Maven in tutti i progetti che ho incontrato negli ultimi 4 anni, dai mini progetti privati ​​ai progetti dozzine di moduli di grandi dimensioni aziendali e non mi sono mai pentito di aver usato Maven.

ho costruito nulla da progetti java JAR/WAR/EAR standard per flettere apps/aria e RPM Linux utilizzando Maven, delegando a uno o AntrunGMaven quando nessun plugin di Maven era disponibile per una data situazione.

La potenza e il comfort del ciclo di vita standard di Maven combinato con l'abbondanza di plug-in disponibili per la generazione del codice, la documentazione, le metriche del codice ecc. Che di solito sono tutti facili da usare, fanno di Maven l'unica vera scelta per i sistemi di sviluppo java.

Vai avanti e colpiscilo, ma finché non inventi qualcosa di meglio, continuerò a usarlo.

+0

Sono d'accordo con tutto il cuore. Con polyglot maven non hai nemmeno bisogno di usare xml più che a mio avviso è uno dei lati negativi di Maven. Per progetti complessi il pom diventa rapidamente molto grande. D'altra parte, se stai usando un editor pom come quello fornito da m2eclipse, non dovrai comunque gestirlo direttamente per la maggior parte dei casi. Nondimeno, le regole Maven poliglotta :) –

1

Ho iniziato con Maven e ci sto. Quando costruisco un progetto con Maven, non ho mai problemi con le librerie mancanti, le versioni di librerie sbagliate, ... Compila, funziona.

L'aggiornamento delle librerie è semplice (non come Ant).

Maven fornisce molti plugin utili. Uso Maven per eseguire test di funzionalità su hudson - scarica la versione più recente del mio progetto, avvia il database incorporato, inserisce il set di dati di dbunit, distribuisce l'applicazione sul jetty, esegue test, rende i risultati dei test.

Una cosa che non mi piace è avere tutto in un unico file. Quindi vorrei specificare la configurazione non solo usando XML.

4

Il grande vantaggio dell'utilizzo di Maven è la sua infrastruttura di repository. Ciò promuove protocolli standard per la condivisione di librerie di terze parti e consente ai team di collaborare in modo più efficace senza essere obbligati a controllare tutto nello stesso repository di codice sorgente (Modular builds).

manager repository sono liberamente disponibili e consiglio l'installazione di uno dei seguenti:

  • Nexus
  • Artifactory
  • Archiva

La buona notizia è che non sei costretto a costruire il tuo codice usando Maven per sfruttare i vantaggi di avere un'infrastruttura Maven.

Raccomando Maven per i progetti "Campo verde" senza un'eredità da difendere. L'inizio di un progetto è generalmente il momento migliore per introdurre una nuova tecnologia ei benefici dell'utilizzo di Maven sono ben documentati. I punti forti sono un processo di compilazione standardizzato e una ricchezza di plug-in di terze parti.

I progetti ANT possono essere riprogettati per interagire con i team che utilizzano Maven. Il plug-in ivy, applicato correttamente, può effettivamente semplificare il processo di creazione ANT. Ivy è in grado di gestire il classpath del progetto scaricando le dipendenze dal repository Maven e successivamente pubblicando le risorse di build (proprio come una "distribuzione" di Maven).

Infine ivy è stato incorporato in altri strumenti di compilazione. Esempi sono nuovi strumenti di build come Gradle, simple-build-tool e sistemi di sviluppo come Grails. Quindi accetta l'uso di un repository Maven Enterprise e scegli lo strumento di compilazione appropriato per il team di progetto.

0

Sono d'accordo con Mark che è ottimo per i progetti greenfield. C'è un po 'di overhead per farlo funzionare nel tuo ambiente di sviluppo, ma ne vale la pena.

Potrei aggiungere che un potenziale pericolo nell'utilizzo di Maven è che se si sta lavorando su un progetto di grandi dimensioni, potrebbe essere difficile mantenere i vasi nel repository. Potresti potenzialmente finire usando diverse versioni di jar nei tuoi POM.xml.

Come per qualsiasi progetto, assicurarsi di disporre di politiche e procedure valide per l'inserimento di diversi jar nella base di codici. Questi vasi possono avere licenze diverse che possono esporre la tua base di codice al mondo open source. Assicurati che queste licenze siano esaminate dal tuo.

+0

Maven risolse un problema specifico che doveva effettivamente fare la gestione delle dipendenze quando non ce n'era nessuna, o c'era una parvenza di una, con Ivy. Personalmente per i grandi programmi di lavoro su più progetti, prima o poi, dovrai guardare il POM_efficace ed è lì che trovo che Maven diventa ingestibile o difficile da gestire ... A MENO CHE tu non sia disciplinato fin dall'inizio. Ecco perché Gradle per me, dal punto di vista _that_ è molto più user friendly, non elimina Maven a causa dei suoi principali punti di forza, e quando si tratta di complessità è più gestibile. Dipende da te però. – Beezer

6

Maven è fantastico!

non ho più tempo di cera lirica come vorrei, ma qui sono i miei primi pochi benefici di Maven, in nessun ordine particolare:

  • ripetibile costruisce: se si può costruire il progetto , i tuoi colleghi saranno sempre in grado di usare le loro macchine. Sarà anche ripetibile sul server di build.
  • Standardizzazione del sistema di generazione: nuovi sviluppatori che sottostanno Maven sapranno istantaneamente come costruire, rilasciare, testare, rimuovere un sacco di spese di apprendimento.
  • Focus sull'automazione: Maven ti mette di fronte all'automazione dei processi attorno allo sviluppo del tuo software.
  • Convenzione sulla configurazione: nessuna configurazione o configurazione minima richiesta per costruire artefatti.
  • Gestione delle dipendenze: Maven risolverà e gestirà le dipendenze per te.
  • Test: la possibilità di eseguire test e test di integrazione come parte del ciclo di vita del progetto.
  • Plugin: ci sono migliaia di plugin per svolgere diversi compiti. Questi sono semplicemente configurati semplicemente aggiungendo un riferimento nel POM.

In termini di aspetti negativi, si dice spesso che si sta meglio accettando le impostazioni predefinite e le convenzioni Maven, e di partenza ideale per usarlo fin dall'inizio di un progetto greenfield. Sarei d'accordo con questo in una certa misura se vuoi risparmiare tempo nella configurazione di XML nel tuo POM.

Non sono un vero fan dello strumento, ma avendo usato Make and Ant prima di Maven, non riesco davvero a vedere un singolo lato negativo nell'adottare Maven. È uno strumento di qualità e un risparmio in tempo reale.

4

Finora mi piace. Quando uso Maven, il tempo di costruzione per un progetto sale drammaticamente. Da diversi ms a un secondo su eclissi, a oltre 30 secondi anche per il più semplice progetto di maven.

Dato che a così tanta gente piace, devo fare qualcosa di sbagliato, ma finora non riesco a capire perché ci vogliono anni per costruire un progetto basato su maven.